feat: add iconSelect component

This commit is contained in:
xiaoxian521 2022-03-05 13:47:24 +08:00
parent a35dc9d7b6
commit 0a7d22248f
23 changed files with 6684 additions and 101 deletions

View File

@ -112,7 +112,7 @@ const tabsRouter = {
icon: "IF-team-icontabs", icon: "IF-team-icontabs",
title: "menus.hstabs", title: "menus.hstabs",
i18n: true, i18n: true,
rank: 11 rank: 12
}, },
children: [ children: [
{ {

View File

@ -30,17 +30,17 @@
"@ctrl/tinycolor": "^3.4.0", "@ctrl/tinycolor": "^3.4.0",
"@logicflow/core": "0.7.1", "@logicflow/core": "0.7.1",
"@logicflow/extension": "0.7.1", "@logicflow/extension": "0.7.1",
"@vueuse/core": "^7.6.2", "@vueuse/core": "^7.7.0",
"@vueuse/motion": "^2.0.0-beta.9", "@vueuse/motion": "^2.0.0-beta.9",
"@vueuse/shared": "^7.6.2", "@vueuse/shared": "^7.7.0",
"animate.css": "^4.1.1", "animate.css": "^4.1.1",
"axios": "^0.25.0", "axios": "^0.26.0",
"cropperjs": "^1.5.11", "cropperjs": "^1.5.12",
"css-color-function": "^1.3.3", "css-color-function": "^1.3.3",
"dayjs": "^1.10.7", "dayjs": "^1.10.7",
"driver.js": "^0.9.8", "driver.js": "^0.9.8",
"echarts": "^5.3.0", "echarts": "^5.3.0",
"element-plus": "^2.0.3", "element-plus": "^2.0.4",
"element-resize-detector": "^1.2.3", "element-resize-detector": "^1.2.3",
"js-cookie": "^3.0.1", "js-cookie": "^3.0.1",
"lodash-es": "^4.17.21", "lodash-es": "^4.17.21",
@ -61,10 +61,10 @@
"vue-router": "^4.0.13", "vue-router": "^4.0.13",
"vue-types": "^4.1.1", "vue-types": "^4.1.1",
"vuedraggable": "4.1.0", "vuedraggable": "4.1.0",
"vxe-table": "^4.1.21", "vxe-table": "^4.2.0",
"wangeditor": "^4.7.9", "wangeditor": "^4.7.12",
"xe-utils": "^3.5.2", "xe-utils": "^3.5.4",
"xgplayer": "2.28.0" "xgplayer": "^2.31.4"
}, },
"devDependencies": { "devDependencies": {
"@commitlint/cli": "13.1.0", "@commitlint/cli": "13.1.0",
@ -106,8 +106,8 @@
"pretty-quick": "3.1.1", "pretty-quick": "3.1.1",
"rimraf": "3.0.2", "rimraf": "3.0.2",
"rollup-plugin-visualizer": "^5.6.0", "rollup-plugin-visualizer": "^5.6.0",
"sass": "^1.49.7", "sass": "^1.49.9",
"sass-loader": "^12.4.0", "sass-loader": "^12.6.0",
"stylelint": "^14.3.0", "stylelint": "^14.3.0",
"stylelint-config-html": "^1.0.0", "stylelint-config-html": "^1.0.0",
"stylelint-config-prettier": "^9.0.3", "stylelint-config-prettier": "^9.0.3",
@ -115,7 +115,7 @@
"stylelint-config-standard": "^24.0.0", "stylelint-config-standard": "^24.0.0",
"stylelint-order": "^5.0.0", "stylelint-order": "^5.0.0",
"typescript": "^4.5.5", "typescript": "^4.5.5",
"unplugin-element-plus": "^0.2.0", "unplugin-element-plus": "^0.3.1",
"vite": "^2.8.6", "vite": "^2.8.6",
"vite-plugin-live-reload": "^2.1.0", "vite-plugin-live-reload": "^2.1.0",
"vite-plugin-mock": "^2.9.6", "vite-plugin-mock": "^2.9.6",

148
pnpm-lock.yaml generated
View File

@ -26,20 +26,20 @@ specifiers:
"@vitejs/plugin-vue-jsx": ^1.3.8 "@vitejs/plugin-vue-jsx": ^1.3.8
"@vue/eslint-config-prettier": ^7.0.0 "@vue/eslint-config-prettier": ^7.0.0
"@vue/eslint-config-typescript": ^10.0.0 "@vue/eslint-config-typescript": ^10.0.0
"@vueuse/core": ^7.6.2 "@vueuse/core": ^7.7.0
"@vueuse/motion": ^2.0.0-beta.9 "@vueuse/motion": ^2.0.0-beta.9
"@vueuse/shared": ^7.6.2 "@vueuse/shared": ^7.7.0
"@zougt/vite-plugin-theme-preprocessor": ^1.4.4 "@zougt/vite-plugin-theme-preprocessor": ^1.4.4
animate.css: ^4.1.1 animate.css: ^4.1.1
autoprefixer: ^10.4.2 autoprefixer: ^10.4.2
axios: ^0.25.0 axios: ^0.26.0
cropperjs: ^1.5.11 cropperjs: ^1.5.12
cross-env: 7.0.3 cross-env: 7.0.3
css-color-function: ^1.3.3 css-color-function: ^1.3.3
dayjs: ^1.10.7 dayjs: ^1.10.7
driver.js: ^0.9.8 driver.js: ^0.9.8
echarts: ^5.3.0 echarts: ^5.3.0
element-plus: ^2.0.3 element-plus: ^2.0.4
element-resize-detector: ^1.2.3 element-resize-detector: ^1.2.3
eslint: ^8.8.0 eslint: ^8.8.0
eslint-plugin-prettier: ^4.0.0 eslint-plugin-prettier: ^4.0.0
@ -68,8 +68,8 @@ specifiers:
rgb-hex: ^4.0.0 rgb-hex: ^4.0.0
rimraf: 3.0.2 rimraf: 3.0.2
rollup-plugin-visualizer: ^5.6.0 rollup-plugin-visualizer: ^5.6.0
sass: ^1.49.7 sass: ^1.49.9
sass-loader: ^12.4.0 sass-loader: ^12.6.0
stylelint: ^14.3.0 stylelint: ^14.3.0
stylelint-config-html: ^1.0.0 stylelint-config-html: ^1.0.0
stylelint-config-prettier: ^9.0.3 stylelint-config-prettier: ^9.0.3
@ -77,7 +77,7 @@ specifiers:
stylelint-config-standard: ^24.0.0 stylelint-config-standard: ^24.0.0
stylelint-order: ^5.0.0 stylelint-order: ^5.0.0
typescript: ^4.5.5 typescript: ^4.5.5
unplugin-element-plus: ^0.2.0 unplugin-element-plus: ^0.3.1
v-contextmenu: 3.0.0 v-contextmenu: 3.0.0
vite: ^2.8.6 vite: ^2.8.6
vite-plugin-live-reload: ^2.1.0 vite-plugin-live-reload: ^2.1.0
@ -93,28 +93,28 @@ specifiers:
vue-router: ^4.0.13 vue-router: ^4.0.13
vue-types: ^4.1.1 vue-types: ^4.1.1
vuedraggable: 4.1.0 vuedraggable: 4.1.0
vxe-table: ^4.1.21 vxe-table: ^4.2.0
wangeditor: ^4.7.9 wangeditor: ^4.7.12
windicss: ^3.5.1 windicss: ^3.5.1
xe-utils: ^3.5.2 xe-utils: ^3.5.4
xgplayer: 2.28.0 xgplayer: ^2.31.4
dependencies: dependencies:
"@amap/amap-jsapi-loader": 1.0.1 "@amap/amap-jsapi-loader": 1.0.1
"@ctrl/tinycolor": 3.4.0 "@ctrl/tinycolor": 3.4.0
"@logicflow/core": 0.7.1 "@logicflow/core": 0.7.1
"@logicflow/extension": 0.7.1 "@logicflow/extension": 0.7.1
"@vueuse/core": 7.6.2_vue@3.2.31 "@vueuse/core": 7.7.0_vue@3.2.31
"@vueuse/motion": 2.0.0-beta.9_vue@3.2.31 "@vueuse/motion": 2.0.0-beta.9_vue@3.2.31
"@vueuse/shared": 7.6.2_vue@3.2.31 "@vueuse/shared": 7.7.0_vue@3.2.31
animate.css: 4.1.1 animate.css: 4.1.1
axios: 0.25.0 axios: 0.26.0
cropperjs: 1.5.12 cropperjs: 1.5.12
css-color-function: 1.3.3 css-color-function: 1.3.3
dayjs: 1.10.7 dayjs: 1.10.7
driver.js: 0.9.8 driver.js: 0.9.8
echarts: 5.3.0 echarts: 5.3.0
element-plus: 2.0.3_1a412d14def5ff5ca1122000e4bee666 element-plus: 2.0.4_1a412d14def5ff5ca1122000e4bee666
element-resize-detector: 1.2.4 element-resize-detector: 1.2.4
js-cookie: 3.0.1 js-cookie: 3.0.1
lodash-es: 4.17.21 lodash-es: 4.17.21
@ -135,10 +135,10 @@ dependencies:
vue-router: 4.0.13_vue@3.2.31 vue-router: 4.0.13_vue@3.2.31
vue-types: 4.1.1_vue@3.2.31 vue-types: 4.1.1_vue@3.2.31
vuedraggable: 4.1.0_vue@3.2.31 vuedraggable: 4.1.0_vue@3.2.31
vxe-table: 4.1.21_vue@3.2.31+xe-utils@3.5.4 vxe-table: 4.2.0_vue@3.2.31+xe-utils@3.5.4
wangeditor: 4.7.11 wangeditor: 4.7.12
xe-utils: 3.5.4 xe-utils: 3.5.4
xgplayer: 2.28.0 xgplayer: 2.31.4
devDependencies: devDependencies:
"@commitlint/cli": 13.1.0 "@commitlint/cli": 13.1.0
@ -162,7 +162,7 @@ devDependencies:
"@vitejs/plugin-vue-jsx": 1.3.8 "@vitejs/plugin-vue-jsx": 1.3.8
"@vue/eslint-config-prettier": 7.0.0_eslint@8.9.0+prettier@2.5.1 "@vue/eslint-config-prettier": 7.0.0_eslint@8.9.0+prettier@2.5.1
"@vue/eslint-config-typescript": 10.0.0_cd100ca74b8c3cfb64acbb3ff997764b "@vue/eslint-config-typescript": 10.0.0_cd100ca74b8c3cfb64acbb3ff997764b
"@zougt/vite-plugin-theme-preprocessor": 1.4.4_sass@1.49.7 "@zougt/vite-plugin-theme-preprocessor": 1.4.4_sass@1.49.9
autoprefixer: 10.4.2_postcss@8.4.6 autoprefixer: 10.4.2_postcss@8.4.6
cross-env: 7.0.3 cross-env: 7.0.3
eslint: 8.9.0 eslint: 8.9.0
@ -180,8 +180,8 @@ devDependencies:
pretty-quick: 3.1.1_prettier@2.5.1 pretty-quick: 3.1.1_prettier@2.5.1
rimraf: 3.0.2 rimraf: 3.0.2
rollup-plugin-visualizer: 5.6.0 rollup-plugin-visualizer: 5.6.0
sass: 1.49.7 sass: 1.49.9
sass-loader: 12.4.0_sass@1.49.7 sass-loader: 12.6.0_sass@1.49.9
stylelint: 14.5.0 stylelint: 14.5.0
stylelint-config-html: 1.0.0_2fdfe057bbf58b3dfbbb46d8950182ee stylelint-config-html: 1.0.0_2fdfe057bbf58b3dfbbb46d8950182ee
stylelint-config-prettier: 9.0.3_stylelint@14.5.0 stylelint-config-prettier: 9.0.3_stylelint@14.5.0
@ -189,8 +189,8 @@ devDependencies:
stylelint-config-standard: 24.0.0_stylelint@14.5.0 stylelint-config-standard: 24.0.0_stylelint@14.5.0
stylelint-order: 5.0.0_stylelint@14.5.0 stylelint-order: 5.0.0_stylelint@14.5.0
typescript: 4.5.5 typescript: 4.5.5
unplugin-element-plus: 0.2.0_vite@2.8.6+vue@3.2.31 unplugin-element-plus: 0.3.1_vite@2.8.6+vue@3.2.31
vite: 2.8.6_sass@1.49.7 vite: 2.8.6_sass@1.49.9
vite-plugin-live-reload: 2.1.0 vite-plugin-live-reload: 2.1.0
vite-plugin-mock: 2.9.6_mockjs@1.1.0+vite@2.8.6 vite-plugin-mock: 2.9.6_mockjs@1.1.0+vite@2.8.6
vite-plugin-remove-console: 0.0.6 vite-plugin-remove-console: 0.0.6
@ -584,7 +584,7 @@ packages:
} }
engines: { node: ">=6.9.0" } engines: { node: ">=6.9.0" }
dependencies: dependencies:
core-js-pure: 3.21.0 core-js-pure: 3.21.1
regenerator-runtime: 0.13.9 regenerator-runtime: 0.13.9
dev: false dev: false
@ -847,10 +847,10 @@ packages:
engines: { node: ">=10" } engines: { node: ">=10" }
dev: false dev: false
/@element-plus/icons-vue/0.2.7_vue@3.2.31: /@element-plus/icons-vue/1.0.0_vue@3.2.31:
resolution: resolution:
{ {
integrity: sha512-S8kDbfVaWkQvbUYQE1ui448tzaHfUvyESCep9J6uPRlViyQPXjdIfwLBhV6AmQSOfFS8rL+xehJGhvzPXLrSBg== integrity: sha512-v8W6uiOfwq9GRWBLc0fvp0WwExU09BLdYfldRBxWUCJHeJ9WHeFrtt6BdixGVl9SCZ2V5soB8gi4tr365a9p/Q==
} }
peerDependencies: peerDependencies:
vue: ^3.2.0 vue: ^3.2.0
@ -1447,7 +1447,7 @@ packages:
magic-string: 0.25.7 magic-string: 0.25.7
regenerator-runtime: 0.13.9 regenerator-runtime: 0.13.9
systemjs: 6.12.1 systemjs: 6.12.1
vite: 2.8.6_sass@1.49.7 vite: 2.8.6_sass@1.49.9
dev: true dev: true
/@vitejs/plugin-vue-jsx/1.3.8: /@vitejs/plugin-vue-jsx/1.3.8:
@ -1477,7 +1477,7 @@ packages:
vite: ^2.5.10 vite: ^2.5.10
vue: ^3.2.25 vue: ^3.2.25
dependencies: dependencies:
vite: 2.8.6_sass@1.49.7 vite: 2.8.6_sass@1.49.9
vue: 3.2.31 vue: 3.2.31
dev: true dev: true
@ -1657,10 +1657,10 @@ packages:
integrity: sha512-ymN2pj6zEjiKJZbrf98UM2pfDd6F2H7ksKw7NDt/ZZ1fh5Ei39X5tABugtT03ZRlWd9imccoK0hE8hpjpU7irQ== integrity: sha512-ymN2pj6zEjiKJZbrf98UM2pfDd6F2H7ksKw7NDt/ZZ1fh5Ei39X5tABugtT03ZRlWd9imccoK0hE8hpjpU7irQ==
} }
/@vueuse/core/7.6.2_vue@3.2.31: /@vueuse/core/7.7.0_vue@3.2.31:
resolution: resolution:
{ {
integrity: sha512-bjAbXJVJO6aElMaZtDz2B70C0L6jFk/jGVqJxWZS5huffxA6dW5DN6tQQJwzOnx9B9rDhePHJIFKsix0qZIH2Q== integrity: sha512-DS8+dg758CiWnswebYHjS05PqTtc1ZLomsDlkFjG/KC0iFRgFIsGC66AAGuSXLqWCoirp2xN6N2mkrp1aHdI7A==
} }
peerDependencies: peerDependencies:
"@vue/composition-api": ^1.1.0 "@vue/composition-api": ^1.1.0
@ -1671,7 +1671,7 @@ packages:
vue: vue:
optional: true optional: true
dependencies: dependencies:
"@vueuse/shared": 7.6.2_vue@3.2.31 "@vueuse/shared": 7.7.0_vue@3.2.31
vue: 3.2.31 vue: 3.2.31
vue-demi: 0.12.1_vue@3.2.31 vue-demi: 0.12.1_vue@3.2.31
dev: false dev: false
@ -1688,16 +1688,16 @@ packages:
"@vue/composition-api": "@vue/composition-api":
optional: true optional: true
dependencies: dependencies:
"@vueuse/core": 7.6.2_vue@3.2.31 "@vueuse/core": 7.7.0_vue@3.2.31
popmotion: 11.0.3 popmotion: 11.0.3
vue: 3.2.31 vue: 3.2.31
vue-demi: 0.12.1_vue@3.2.31 vue-demi: 0.12.1_vue@3.2.31
dev: false dev: false
/@vueuse/shared/7.6.2_vue@3.2.31: /@vueuse/shared/7.7.0_vue@3.2.31:
resolution: resolution:
{ {
integrity: sha512-ThDld4Mx501tahRuHV6qJGkwCr17GknZrOzlD02Na9qJcH7Pq0quNTLx5cNDou7b1CKNvE3BXi2w/hz9KuPNTQ== integrity: sha512-ANzMcUnjuUPJ9nWqMAqYt8p0qon6AH5pP5/V/0RSWkwCIWZwi57ujIaxizzMwnJECUF/73BmsRmpvvtokCIrKw==
} }
peerDependencies: peerDependencies:
"@vue/composition-api": ^1.1.0 "@vue/composition-api": ^1.1.0
@ -1742,7 +1742,7 @@ packages:
- supports-color - supports-color
dev: true dev: true
/@zougt/some-loader-utils/1.4.2_sass@1.49.7: /@zougt/some-loader-utils/1.4.2_sass@1.49.9:
resolution: resolution:
{ {
integrity: sha512-RYD7OPoypVGICOO+9P/6fawtp1gi2/sp4Lol5S0cUzrBvrWnPJTYENplDtxutVQtLwXKg9aKS+B2/zGEEebJqA== integrity: sha512-RYD7OPoypVGICOO+9P/6fawtp1gi2/sp4Lol5S0cUzrBvrWnPJTYENplDtxutVQtLwXKg9aKS+B2/zGEEebJqA==
@ -1760,18 +1760,18 @@ packages:
fs-extra: 10.0.0 fs-extra: 10.0.0
postcss: 8.4.6 postcss: 8.4.6
prettier: 2.5.1 prettier: 2.5.1
sass: 1.49.7 sass: 1.49.9
uuid: 8.3.2 uuid: 8.3.2
dev: true dev: true
/@zougt/vite-plugin-theme-preprocessor/1.4.4_sass@1.49.7: /@zougt/vite-plugin-theme-preprocessor/1.4.4_sass@1.49.9:
resolution: resolution:
{ {
integrity: sha512-YeykUlFIwyn7PMuVu419qP6x0r58FgRMmicBBa1/olpuC4+ND8/G3g5uZqhyyVE4JwM7rHRLjWN/9oTcZHUruA== integrity: sha512-YeykUlFIwyn7PMuVu419qP6x0r58FgRMmicBBa1/olpuC4+ND8/G3g5uZqhyyVE4JwM7rHRLjWN/9oTcZHUruA==
} }
engines: { node: ">= 12.0.0" } engines: { node: ">= 12.0.0" }
dependencies: dependencies:
"@zougt/some-loader-utils": 1.4.2_sass@1.49.7 "@zougt/some-loader-utils": 1.4.2_sass@1.49.9
cac: 6.7.12 cac: 6.7.12
chalk: 5.0.0 chalk: 5.0.0
fs-extra: 10.0.0 fs-extra: 10.0.0
@ -1996,13 +1996,13 @@ packages:
postcss-value-parser: 4.2.0 postcss-value-parser: 4.2.0
dev: true dev: true
/axios/0.25.0: /axios/0.26.0:
resolution: resolution:
{ {
integrity: sha512-cD8FOb0tRH3uuEe6+evtAbgJtfxr7ly3fQjYcMcuPlgkwVS9xboaVIpcDV+cYQe+yGykgwZCs1pzjntcGa6l5g== integrity: sha512-lKoGLMYtHvFrPVt3r+RBMp9nh34N0M8zEfCWqdWZx6phynIEhQqAdydpyBAAG211zlhX9Rgu08cOamy6XjE5Og==
} }
dependencies: dependencies:
follow-redirects: 1.14.8 follow-redirects: 1.14.9
transitivePeerDependencies: transitivePeerDependencies:
- debug - debug
dev: false dev: false
@ -2504,10 +2504,10 @@ packages:
safe-buffer: 5.1.2 safe-buffer: 5.1.2
dev: true dev: true
/core-js-pure/3.21.0: /core-js-pure/3.21.1:
resolution: resolution:
{ {
integrity: sha512-VaJUunCZLnxuDbo1rNOzwbet9E1K9joiXS5+DQMPtgxd24wfsZbJZMMfQLGYMlCUvSxLfsRUUhoOR2x28mFfeg== integrity: sha512-12VZfFIu+wyVbBebyHmRTuEE/tZrB4tJToWcwAMcsp3h4+sHR+fMJWbKpYiCRWlhFBq+KNyO8rIV9rTkeVmznQ==
} }
requiresBuild: true requiresBuild: true
dev: false dev: false
@ -2986,18 +2986,18 @@ packages:
} }
dev: true dev: true
/element-plus/2.0.3_1a412d14def5ff5ca1122000e4bee666: /element-plus/2.0.4_1a412d14def5ff5ca1122000e4bee666:
resolution: resolution:
{ {
integrity: sha512-k+b4V4sGmgOpOYjrAWyp0k+N1mVaIZQ9LpbXWvmJNzE+j21DYOe9m1zGn5mFDPgeLOZcUS7QzzwYAommhwFj0g== integrity: sha512-g/YT/uY6zbNTAl9jL4zT8WRSf/4KG6GB3Y89MCO/lbglHsps5sdDFohcuOb8699BtIXkXsbOzdwmbk9kDHqHxA==
} }
peerDependencies: peerDependencies:
vue: ^3.2.0 vue: ^3.2.0
dependencies: dependencies:
"@ctrl/tinycolor": 3.4.0 "@ctrl/tinycolor": 3.4.0
"@element-plus/icons-vue": 0.2.7_vue@3.2.31 "@element-plus/icons-vue": 1.0.0_vue@3.2.31
"@popperjs/core": 2.11.2 "@popperjs/core": 2.11.2
"@vueuse/core": 7.6.2_vue@3.2.31 "@vueuse/core": 7.7.0_vue@3.2.31
async-validator: 4.0.7 async-validator: 4.0.7
dayjs: 1.10.7 dayjs: 1.10.7
lodash: 4.17.21 lodash: 4.17.21
@ -3851,10 +3851,10 @@ packages:
} }
dev: true dev: true
/follow-redirects/1.14.8: /follow-redirects/1.14.9:
resolution: resolution:
{ {
integrity: sha512-1x0S9UVJHsQprFcEC/qnNzBLcIxsjAV905f/UkQxbclCsoTWlacCNOpQa/anodLl2uaEKFhfWOvM2Qg77+15zA== integrity: sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w==
} }
engines: { node: ">=4.0" } engines: { node: ">=4.0" }
peerDependencies: peerDependencies:
@ -6287,16 +6287,17 @@ packages:
} }
dev: true dev: true
/sass-loader/12.4.0_sass@1.49.7: /sass-loader/12.6.0_sass@1.49.9:
resolution: resolution:
{ {
integrity: sha512-7xN+8khDIzym1oL9XyS6zP6Ges+Bo2B2xbPrjdMHEYyV3AQYhd/wXeru++3ODHF0zMjYmVadblSKrPrjEkL8mg== integrity: sha512-oLTaH0YCtX4cfnJZxKSLAyglED0naiYfNG1iXfU5w1LNZ+ukoA5DtyDIN5zmKVZwYNJP4KRc5Y3hkWga+7tYfA==
} }
engines: { node: ">= 12.13.0" } engines: { node: ">= 12.13.0" }
peerDependencies: peerDependencies:
fibers: ">= 3.1.0" fibers: ">= 3.1.0"
node-sass: ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 node-sass: ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0
sass: ^1.3.0 sass: ^1.3.0
sass-embedded: "*"
webpack: ^5.0.0 webpack: ^5.0.0
peerDependenciesMeta: peerDependenciesMeta:
fibers: fibers:
@ -6305,16 +6306,18 @@ packages:
optional: true optional: true
sass: sass:
optional: true optional: true
sass-embedded:
optional: true
dependencies: dependencies:
klona: 2.0.5 klona: 2.0.5
neo-async: 2.6.2 neo-async: 2.6.2
sass: 1.49.7 sass: 1.49.9
dev: true dev: true
/sass/1.49.7: /sass/1.49.9:
resolution: resolution:
{ {
integrity: sha512-13dml55EMIR2rS4d/RDHHP0sXMY3+30e1TKsyXaSz3iLWVoDWEoboY8WzJd5JMnxrRHffKO3wq2mpJ0jxRJiEQ== integrity: sha512-YlYWkkHP9fbwaFRZQRXgDi3mXZShslVmmo+FVK3kHLUELHHEYrCmL1x6IUjC7wLS6VuJSAFXRQS/DxdsC4xL1A==
} }
engines: { node: ">=12.0.0" } engines: { node: ">=12.0.0" }
hasBin: true hasBin: true
@ -7095,18 +7098,19 @@ packages:
engines: { node: ">= 0.8" } engines: { node: ">= 0.8" }
dev: true dev: true
/unplugin-element-plus/0.2.0_vite@2.8.6+vue@3.2.31: /unplugin-element-plus/0.3.1_vite@2.8.6+vue@3.2.31:
resolution: resolution:
{ {
integrity: sha512-eBgNLCZUUCfl68J+pb9MWVh8amBjLWL5yZ8BuNuJfhS6FFGJ/dMtCmAoaeHyI9wE3k+7C4gbfEM78dkX48gfVA== integrity: sha512-DowQB5yvyJ/89q45o9LELGiRFYIGo5AJZqEBsjVJOVHL0x3OY57XB5BTLxUd5Of3wPk646MvADKY3htJvopy9w==
} }
engines: { node: ">=14" }
peerDependencies: peerDependencies:
vue: "3" vue: "3"
dependencies: dependencies:
"@rollup/pluginutils": 4.1.2 "@rollup/pluginutils": 4.1.2
es-module-lexer: 0.9.3 es-module-lexer: 0.9.3
magic-string: 0.25.7 magic-string: 0.25.7
unplugin: 0.3.2_vite@2.8.6 unplugin: 0.3.3_vite@2.8.6
vue: 3.2.31 vue: 3.2.31
transitivePeerDependencies: transitivePeerDependencies:
- esbuild - esbuild
@ -7115,10 +7119,10 @@ packages:
- webpack - webpack
dev: true dev: true
/unplugin/0.3.2_vite@2.8.6: /unplugin/0.3.3_vite@2.8.6:
resolution: resolution:
{ {
integrity: sha512-5d0DMYNKZU+S9eZUiBfw6Co32eRg8myUgBPoWSqG/wDFCUE/WznfSsJnZWi1P9l69x4uLJqt2qVq1xW/AsXFrw== integrity: sha512-WjZWpUqqcYPQ/efR00Zm2m1+J1LitwoZ4uhHV4VdZ+IpW0Nh/qnDYtVf+nLhozXdGxslMPecOshVR7NiWFl4gA==
} }
peerDependencies: peerDependencies:
esbuild: ">=0.13" esbuild: ">=0.13"
@ -7135,7 +7139,7 @@ packages:
webpack: webpack:
optional: true optional: true
dependencies: dependencies:
vite: 2.8.6_sass@1.49.7 vite: 2.8.6_sass@1.49.9
webpack-virtual-modules: 0.4.3 webpack-virtual-modules: 0.4.3
dev: true dev: true
@ -7251,7 +7255,7 @@ packages:
fast-glob: 3.2.11 fast-glob: 3.2.11
mockjs: 1.1.0 mockjs: 1.1.0
path-to-regexp: 6.2.0 path-to-regexp: 6.2.0
vite: 2.8.6_sass@1.49.7 vite: 2.8.6_sass@1.49.9
transitivePeerDependencies: transitivePeerDependencies:
- rollup - rollup
- supports-color - supports-color
@ -7278,7 +7282,7 @@ packages:
es-module-lexer: 0.9.3 es-module-lexer: 0.9.3
fs-extra: 10.0.0 fs-extra: 10.0.0
magic-string: 0.25.7 magic-string: 0.25.7
vite: 2.8.6_sass@1.49.7 vite: 2.8.6_sass@1.49.9
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
dev: true dev: true
@ -7294,7 +7298,7 @@ packages:
"@windicss/plugin-utils": 1.8.2 "@windicss/plugin-utils": 1.8.2
debug: 4.3.3 debug: 4.3.3
kolorist: 1.5.1 kolorist: 1.5.1
vite: 2.8.6_sass@1.49.7 vite: 2.8.6_sass@1.49.9
windicss: 3.5.1 windicss: 3.5.1
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
@ -7310,7 +7314,7 @@ packages:
svgo: 2.8.0 svgo: 2.8.0
dev: true dev: true
/vite/2.8.6_sass@1.49.7: /vite/2.8.6_sass@1.49.9:
resolution: resolution:
{ {
integrity: sha512-e4H0QpludOVKkmOsRyqQ7LTcMUDF3mcgyNU4lmi0B5JUbe0ZxeBBl8VoZ8Y6Rfn9eFKYtdXNPcYK97ZwH+K2ug== integrity: sha512-e4H0QpludOVKkmOsRyqQ7LTcMUDF3mcgyNU4lmi0B5JUbe0ZxeBBl8VoZ8Y6Rfn9eFKYtdXNPcYK97ZwH+K2ug==
@ -7333,7 +7337,7 @@ packages:
postcss: 8.4.6 postcss: 8.4.6
resolve: 1.22.0 resolve: 1.22.0
rollup: 2.68.0 rollup: 2.68.0
sass: 1.49.7 sass: 1.49.9
optionalDependencies: optionalDependencies:
fsevents: 2.3.2 fsevents: 2.3.2
dev: true dev: true
@ -7455,10 +7459,10 @@ packages:
vue: 3.2.31 vue: 3.2.31
dev: false dev: false
/vxe-table/4.1.21_vue@3.2.31+xe-utils@3.5.4: /vxe-table/4.2.0_vue@3.2.31+xe-utils@3.5.4:
resolution: resolution:
{ {
integrity: sha512-EtZYDZ0W3LfGygi6MkTeflV3aF1ED6T74VFbmTv2D0X29onsH6CQZEkreQCRG91HDoijrMsIxHmWxUz+QNjA0A== integrity: sha512-ddb4OdTdhjT+E+5gu+NbJuTLJa/BlzUb98O0ZsVwGYUnMWoYqHh68JRkHxFona/Dxv6ir8HBX7kZamfoWhB+NQ==
} }
peerDependencies: peerDependencies:
vue: ^3.2.2 vue: ^3.2.2
@ -7468,10 +7472,10 @@ packages:
xe-utils: 3.5.4 xe-utils: 3.5.4
dev: false dev: false
/wangeditor/4.7.11: /wangeditor/4.7.12:
resolution: resolution:
{ {
integrity: sha512-z6xEHTSj4YgqvQkHWh9/V/Md7hjEKchXquwvtxvWhwlMS/wBFprCg7qgE4omzuSBeivkZZGTJP08pmdHzOwCUQ== integrity: sha512-5KOIpQ0+idKvDTkjZOp7RHYXA97FyJ9mjwy+zQUdMUCqZItlEXzvVOYtOlHkJr/HcbwgIz/7f/trGFggZK5X4g==
} }
dependencies: dependencies:
"@babel/runtime": 7.17.2 "@babel/runtime": 7.17.2
@ -7591,10 +7595,10 @@ packages:
generate-source-map: 0.0.5 generate-source-map: 0.0.5
dev: false dev: false
/xgplayer/2.28.0: /xgplayer/2.31.4:
resolution: resolution:
{ {
integrity: sha512-gT0ipSqP+b6S2bRE+O1QZMGgO1m09rB+1XHSqbCTVCHqWmPc5oSO0WNS7feKGPAQibfKG8NK4ZAleDmGqLjgFQ== integrity: sha512-apuAucT8RMsC8t0lattoBI9g8o9Pf7ZP7G5Eh5T7CpYAC7WA8zWZiWSunidc3rAs9HZmROhRtd1RhPnIyXGJjg==
} }
hasBin: true hasBin: true
dependencies: dependencies:

File diff suppressed because it is too large Load Diff

View File

@ -1,13 +1,16 @@
import iconifyIconOffline from "./src/iconifyIconOffline"; import iconifyIconOffline from "./src/iconifyIconOffline";
import iconifyIconOnline from "./src/iconifyIconOnline"; import iconifyIconOnline from "./src/iconifyIconOnline";
import fontIcon from "./src/iconfont"; import fontIcon from "./src/iconfont";
import iconSelect from "./src/select.vue";
export const IconifyIconOffline = iconifyIconOffline; export const IconifyIconOffline = iconifyIconOffline;
export const IconifyIconOnline = iconifyIconOnline; export const IconifyIconOnline = iconifyIconOnline;
export const FontIcon = fontIcon; export const FontIcon = fontIcon;
export const IconSelect = iconSelect;
export default { export default {
IconifyIconOffline, IconifyIconOffline,
IconifyIconOnline, IconifyIconOnline,
FontIcon FontIcon,
IconSelect
}; };

View File

@ -60,12 +60,16 @@ import logoutCircleRLine from "@iconify-icons/ri/logout-circle-r-line";
import nodeTree from "@iconify-icons/ri/node-tree"; import nodeTree from "@iconify-icons/ri/node-tree";
import ubuntuFill from "@iconify-icons/ri/ubuntu-fill"; import ubuntuFill from "@iconify-icons/ri/ubuntu-fill";
import questionLine from "@iconify-icons/ri/question-line"; import questionLine from "@iconify-icons/ri/question-line";
import checkboxCircleLine from "@iconify-icons/ri/checkbox-circle-line";
import informationLine from "@iconify-icons/ri/information-line";
addIcon("arrow-right-s-line", arrowRightSLine); addIcon("arrow-right-s-line", arrowRightSLine);
addIcon("arrow-left-s-line", arrowLeftSLine); addIcon("arrow-left-s-line", arrowLeftSLine);
addIcon("logout-circle-r-line", logoutCircleRLine); addIcon("logout-circle-r-line", logoutCircleRLine);
addIcon("node-tree", nodeTree); addIcon("node-tree", nodeTree);
addIcon("ubuntu-fill", ubuntuFill); addIcon("ubuntu-fill", ubuntuFill);
addIcon("question-line", questionLine); addIcon("question-line", questionLine);
addIcon("checkbox-circle-line", checkboxCircleLine);
addIcon("information-line", informationLine);
// Font Awesome 4 // Font Awesome 4
import faUser from "@iconify-icons/fa/user"; import faUser from "@iconify-icons/fa/user";

View File

@ -0,0 +1,200 @@
<script setup lang="ts">
import { cloneDeep } from "lodash-unified";
import { ref, computed, CSSProperties } from "vue";
import { IconJson } from "/@/components/ReIcon/data";
type ParameterCSSProperties = (item?: string) => CSSProperties | undefined;
let inputValue = ref("ep:add-location");
let iconList = ref(IconJson);
let icon = ref("add-location");
let currentActiveType = ref("ep:");
//
let copyIconList = cloneDeep(iconList.value);
let pageSize = ref(96);
let currentPage = ref(1);
//
let filterValue = ref("");
let tabsList = [
{
label: "Element Plus",
name: "ep:"
},
{
label: "Remix Icon",
name: "ri:"
},
{
label: "Font Awesome 4",
name: "fa:"
},
{
label: "Font Awesome 5 Solid",
name: "fa-solid:"
},
{
label: "Ant Design Icons",
name: "ant-design:"
},
{
label: "VSCode Icons",
name: "vscode-icons:"
}
];
let pageList = computed(() => {
if (currentPage.value === 1) {
return copyIconList[currentActiveType.value]
.slice(currentPage.value - 1, pageSize.value)
.filter(v => v.includes(filterValue.value));
} else {
return copyIconList[currentActiveType.value]
.slice(
pageSize.value * (currentPage.value - 1),
pageSize.value * (currentPage.value - 1) + pageSize.value
)
.filter(v => v.includes(filterValue.value));
}
});
const iconItemStyle = computed((): ParameterCSSProperties => {
return item => {
if (inputValue.value === currentActiveType.value + item) {
return {
borderColor: "var(--el-color-primary)"
};
}
};
});
function handleClick({ props }) {
currentPage.value = 1;
currentActiveType.value = props.name;
inputValue.value =
currentActiveType.value + iconList.value[currentActiveType.value][0];
icon.value = iconList.value[currentActiveType.value][0];
}
function onChangeIcon(item) {
inputValue.value = currentActiveType.value + item;
icon.value = item;
}
function onCurrentChange(page) {
currentPage.value = page;
}
</script>
<template>
<div class="selector w-350px">
<el-input v-model="inputValue" disabled>
<template #append>
<el-popover :width="350" trigger="click" popper-class="pure-popper">
<template #reference>
<div
class="w-40px h-32px cursor-pointer flex justify-center items-center"
>
<IconifyIconOnline :icon="icon" :type="currentActiveType" />
</div>
</template>
<el-input
class="p-2"
v-model="filterValue"
placeholder="搜索图标"
clearable
/>
<el-divider border-style="dashed"></el-divider>
<el-tabs v-model="currentActiveType" @tab-click="handleClick">
<el-tab-pane
v-for="(pane, index) in tabsList"
:key="index"
:label="pane.label"
:name="pane.name"
>
<el-divider
class="tab-divider"
border-style="dashed"
></el-divider>
<el-scrollbar height="220px">
<ul class="flex flex-wrap px-2 ml-2">
<li
v-for="(item, key) in pageList"
:key="key"
:title="item"
class="icon-item p-2 w-1/10 cursor-pointer mr-2 mt-1 flex justify-center items-center border border-solid"
:style="iconItemStyle(item)"
@click="onChangeIcon(item)"
>
<IconifyIconOnline :icon="item" :type="currentActiveType" />
</li>
</ul>
</el-scrollbar>
</el-tab-pane>
</el-tabs>
<el-divider border-style="dashed"></el-divider>
<el-pagination
small
:total="copyIconList[currentActiveType].length"
:page-size="pageSize"
:current-page="currentPage"
background
layout="prev, pager, next"
class="flex items-center justify-center h-10"
@current-change="onCurrentChange"
>
</el-pagination>
</el-popover>
</template>
</el-input>
</div>
</template>
<style lang="scss" scoped>
.el-divider--horizontal {
margin: 1px auto !important;
}
.tab-divider.el-divider--horizontal {
margin: 0 !important;
}
.icon-item {
&:hover {
border-color: var(--el-color-primary);
}
}
:deep(.el-tabs__nav-next) {
font-size: 15px;
line-height: 32px;
box-shadow: -5px 0 5px -6px #ccc;
}
:deep(.el-tabs__nav-prev) {
font-size: 15px;
line-height: 32px;
box-shadow: 5px 0 5px -6px #ccc;
}
:deep(.el-input-group__append) {
padding: 0;
}
:deep(.el-tabs__item) {
font-size: 12px;
font-weight: normal;
height: 30px;
line-height: 30px;
}
:deep(.el-tabs__header),
:deep(.el-tabs__nav-wrap) {
margin: 0;
position: static;
}
</style>

View File

@ -42,5 +42,9 @@ export default {
hsPureDocument: "Pure Doc(Embedded)", hsPureDocument: "Pure Doc(Embedded)",
externalLink: "Pure Doc(External)", externalLink: "Pure Doc(External)",
hsEpDocument: "Element Plus Doc(Embedded)", hsEpDocument: "Element Plus Doc(Embedded)",
hsAbout: "About" hsAbout: "About",
hsResult: "Result Page",
hsSuccess: "Success Page",
hsFail: "Fail Page",
hsIconSelect: "Icon Select"
}; };

View File

@ -42,5 +42,9 @@ export default {
hsPureDocument: "平台文档(内嵌)", hsPureDocument: "平台文档(内嵌)",
externalLink: "平台文档(外链)", externalLink: "平台文档(外链)",
hsEpDocument: "Element Plus文档(内嵌)", hsEpDocument: "Element Plus文档(内嵌)",
hsAbout: "关于" hsAbout: "关于",
hsResult: "结果页面",
hsSuccess: "成功页面",
hsFail: "失败页面",
hsIconSelect: "图标选择器"
}; };

View File

@ -39,6 +39,15 @@ const ableRouter = {
title: $t("menus.hsPrint"), title: $t("menus.hsPrint"),
i18n: true i18n: true
} }
},
{
path: "/able/iconSelect",
name: "reIconSelect",
component: () => import("/@/views/able/icon-select.vue"),
meta: {
title: $t("menus.hsIconSelect"),
i18n: true
}
} }
] ]
}; };

View File

@ -10,7 +10,7 @@ const aboutRouter = {
icon: "question-line", icon: "question-line",
title: $t("menus.hsAbout"), title: $t("menus.hsAbout"),
i18n: true, i18n: true,
rank: 12 rank: 14
}, },
children: [ children: [
{ {

View File

@ -7,7 +7,7 @@ const errorRouter = {
component: Layout, component: Layout,
redirect: "/error/403", redirect: "/error/403",
meta: { meta: {
icon: "position", icon: "information-line",
title: $t("menus.hserror"), title: $t("menus.hserror"),
i18n: true, i18n: true,
rank: 9 rank: 9

View File

@ -10,7 +10,7 @@ const guideRouter = {
icon: "guide", icon: "guide",
title: $t("menus.hsguide"), title: $t("menus.hsguide"),
i18n: true, i18n: true,
rank: 11 rank: 13
}, },
children: [ children: [
{ {

View File

@ -4,6 +4,7 @@ import homeRouter from "./home";
import ableRouter from "./able"; import ableRouter from "./able";
import errorRouter from "./error"; import errorRouter from "./error";
import guideRouter from "./guide"; import guideRouter from "./guide";
import resultRouter from "./result";
import editorRouter from "./editor"; import editorRouter from "./editor";
import nestedRouter from "./nested"; import nestedRouter from "./nested";
import flowChartRouter from "./flowchart"; import flowChartRouter from "./flowchart";
@ -25,6 +26,7 @@ const routes = [
ableRouter, ableRouter,
errorRouter, errorRouter,
guideRouter, guideRouter,
resultRouter,
nestedRouter, nestedRouter,
editorRouter, editorRouter,
flowChartRouter, flowChartRouter,

View File

@ -10,7 +10,7 @@ const nestedRouter = {
title: $t("menus.hsmenus"), title: $t("menus.hsmenus"),
icon: "histogram", icon: "histogram",
i18n: true, i18n: true,
rank: 8 rank: 11
}, },
children: [ children: [
{ {

View File

@ -0,0 +1,37 @@
import { $t } from "/@/plugins/i18n";
const Layout = () => import("/@/layout/index.vue");
const resultRouter = {
path: "/result",
name: "reResult",
component: Layout,
redirect: "/result/success",
meta: {
icon: "checkbox-circle-line",
title: $t("menus.hsResult"),
i18n: true,
rank: 8
},
children: [
{
path: "/result/success",
name: "reSuccess",
component: () => import("/@/views/result/success.vue"),
meta: {
title: $t("menus.hsSuccess"),
i18n: true
}
},
{
path: "/result/fail",
name: "reFail",
component: () => import("/@/views/result/fail.vue"),
meta: {
title: $t("menus.hsFail"),
i18n: true
}
}
]
};
export default resultRouter;

View File

@ -36,6 +36,11 @@
z-index: 99999 !important; z-index: 99999 !important;
} }
// 自定义popover的类名
.pure-popper {
padding: 0 !important;
}
/* 动态改变cssvar 用于主题切换 https://github.com/element-plus/element-plus/issues/4856#issuecomment-1000174357 */ /* 动态改变cssvar 用于主题切换 https://github.com/element-plus/element-plus/issues/4856#issuecomment-1000174357 */
.el-button--primary { .el-button--primary {
--el-button-active-bg-color: var(--el-color-primary-active) !important; --el-button-active-bg-color: var(--el-color-primary-active) !important;

View File

@ -0,0 +1,14 @@
<script setup lang="ts">
import { IconSelect } from "/@/components/ReIcon";
</script>
<template>
<el-card>
<template #header>
<div class="card-header">
<span class="font-medium">图标选择器</span>
</div>
</template>
<IconSelect />
</el-card>
</template>

View File

@ -6,9 +6,57 @@ import noAccess from "/@/assets/status/403.svg?component";
<div class="flex justify-center items-center h-screen-sm"> <div class="flex justify-center items-center h-screen-sm">
<noAccess /> <noAccess />
<div class="ml-12"> <div class="ml-12">
<p class="font-medium text-4xl mb-4">403</p> <p
<p class="mb-4 text-gray-500">抱歉你无权访问该页面</p> class="font-medium text-4xl mb-4"
<el-button type="primary" @click="$router.push('/')">返回首页</el-button> v-motion
:initial="{
opacity: 0,
y: 100
}"
:enter="{
opacity: 1,
y: 0,
transition: {
delay: 100
}
}"
>
403
</p>
<p
class="mb-4 text-gray-500"
v-motion
:initial="{
opacity: 0,
y: 100
}"
:enter="{
opacity: 1,
y: 0,
transition: {
delay: 300
}
}"
>
抱歉你无权访问该页面
</p>
<el-button
type="primary"
@click="$router.push('/')"
v-motion
:initial="{
opacity: 0,
y: 100
}"
:enter="{
opacity: 1,
y: 0,
transition: {
delay: 500
}
}"
>返回首页</el-button
>
</div> </div>
</div> </div>
</template> </template>

View File

@ -6,9 +6,57 @@ import noExist from "/@/assets/status/404.svg?component";
<div class="flex justify-center items-center h-screen-sm"> <div class="flex justify-center items-center h-screen-sm">
<noExist /> <noExist />
<div class="ml-12"> <div class="ml-12">
<p class="font-medium text-4xl mb-4">404</p> <p
<p class="mb-4 text-gray-500">抱歉你访问的页面不存在</p> class="font-medium text-4xl mb-4"
<el-button type="primary" @click="$router.push('/')">返回首页</el-button> v-motion
:initial="{
opacity: 0,
y: 100
}"
:enter="{
opacity: 1,
y: 0,
transition: {
delay: 100
}
}"
>
404
</p>
<p
class="mb-4 text-gray-500"
v-motion
:initial="{
opacity: 0,
y: 100
}"
:enter="{
opacity: 1,
y: 0,
transition: {
delay: 300
}
}"
>
抱歉你访问的页面不存在
</p>
<el-button
type="primary"
@click="$router.push('/')"
v-motion
:initial="{
opacity: 0,
y: 100
}"
:enter="{
opacity: 1,
y: 0,
transition: {
delay: 500
}
}"
>返回首页</el-button
>
</div> </div>
</div> </div>
</template> </template>

View File

@ -6,9 +6,57 @@ import noServer from "/@/assets/status/500.svg?component";
<div class="flex justify-center items-center h-screen-sm"> <div class="flex justify-center items-center h-screen-sm">
<noServer /> <noServer />
<div class="ml-12"> <div class="ml-12">
<p class="font-medium text-4xl mb-4">403</p> <p
<p class="mb-4 text-gray-500">抱歉服务器出错了</p> class="font-medium text-4xl mb-4"
<el-button type="primary" @click="$router.push('/')">返回首页</el-button> v-motion
:initial="{
opacity: 0,
y: 100
}"
:enter="{
opacity: 1,
y: 0,
transition: {
delay: 100
}
}"
>
403
</p>
<p
class="mb-4 text-gray-500"
v-motion
:initial="{
opacity: 0,
y: 100
}"
:enter="{
opacity: 1,
y: 0,
transition: {
delay: 300
}
}"
>
抱歉服务器出错了
</p>
<el-button
type="primary"
@click="$router.push('/')"
v-motion
:initial="{
opacity: 0,
y: 100
}"
:enter="{
opacity: 1,
y: 0,
transition: {
delay: 500
}
}"
>返回首页</el-button
>
</div> </div>
</div> </div>
</template> </template>

View File

@ -0,0 +1,7 @@
<script setup lang="ts"></script>
<template>
<div></div>
</template>
<style scoped></style>

View File

@ -0,0 +1,7 @@
<script setup lang="ts"></script>
<template>
<div></div>
</template>
<style scoped></style>