Skip to content

Commit f4ba799

Browse files
committed
feat(ui): add mdiv6 icons set
1 parent 6e1215f commit f4ba799

File tree

7 files changed

+6308
-4
lines changed

7 files changed

+6308
-4
lines changed

ui/README.md

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ import '@quasar/quasar-ui-qiconpicker/dist/icon-set/material-icons-outlined.umd.
9292
import '@quasar/quasar-ui-qiconpicker/dist/icon-set/material-icons-round.umd.js'
9393
import '@quasar/quasar-ui-qiconpicker/dist/icon-set/material-icons-sharp.umd.js'
9494
import '@quasar/quasar-ui-qiconpicker/dist/icon-set/material-icons.umd.js'
95-
import '@quasar/quasar-ui-qiconpicker/dist/icon-set/mdi-v5.umd.js'
95+
import '@quasar/quasar-ui-qiconpicker/dist/icon-set/mdi-v6.umd.js'
9696
import '@quasar/quasar-ui-qiconpicker/dist/icon-set/themify.umd.js'
9797
import '@quasar/quasar-ui-qiconpicker/dist/icon-set/bootstrap-icons.umd.js'
9898
export default {
@@ -145,9 +145,12 @@ Choices are:
145145
7. material-icons.umd.js
146146
8. mdi-v4.umd.js
147147
9. mdi-v5.umd.js
148-
10. themify.umd.js
149-
11. line-awesome.umd.js
150-
12. bootstrap-icons.umd.js
148+
10. mdi-v5.umd.js
149+
11. themify.umd.js
150+
12. line-awesome.umd.js
151+
13. bootstrap-icons.umd.js
152+
153+
> You can only use one of `mdi-v4`, `mdi-v5` or `mdi-v6`
151154
152155
### UMD Example
153156
```html

ui/build/icons/build.all.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ const { join } = require('path')
55
runJob(join(__dirname, './build.google.material-icons.js'))
66
runJob(join(__dirname, './build.mdi-v4.js'))
77
runJob(join(__dirname, './build.mdi-v5.js'))
8+
runJob(join(__dirname, './build.mdi-v6.js'))
89
runJob(join(__dirname, './build.ion.js'))
910
runJob(join(__dirname, './build.eva.js'))
1011
runJob(join(__dirname, './build.themify.js'))

ui/build/icons/build.mdi-v6.js

Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
const path = require('path')
2+
const { green, blue, red } = require('chalk')
3+
const { readFile, writeFile } = require('../utils')
4+
5+
const name = 'mdi-v6'
6+
const inputLocation = `../../src/components/icon-set/${name}.js`
7+
const outputLocation = `../../src/components/icon-set/${name}.js`
8+
const oldIcons = {}
9+
const icons = []
10+
const blacklisted = [
11+
'md',
12+
'mdi-blank',
13+
'mdi-18px.mdi-set, .mdi-18px.md',
14+
'mdi-24px.mdi-set, .mdi-24px.md',
15+
'mdi-36px.mdi-set, .mdi-36px.md',
16+
'mdi-48px.mdi-set, .mdi-48px.md',
17+
'mdi-dar',
18+
'mdi-dark.mdi-inactiv',
19+
'mdi-ligh',
20+
'mdi-light.mdi-inactiv',
21+
'mdi-rotate-4',
22+
'mdi-rotate-9',
23+
'mdi-rotate-13',
24+
'mdi-rotate-18',
25+
'mdi-rotate-22',
26+
'mdi-rotate-27',
27+
'mdi-rotate-31',
28+
'mdi-flip-',
29+
'mdi-spi'
30+
]
31+
32+
let fa = readFile(path.resolve(__dirname, inputLocation))
33+
fa = fa.split('\n')
34+
fa.shift()
35+
fa.shift()
36+
fa.shift()
37+
fa.pop()
38+
fa.pop()
39+
fa.pop()
40+
fa = '[\n' + fa.join(',\n') + '\n]\n'
41+
// eslint-disable-next-line no-eval
42+
fa = eval(fa)
43+
fa.forEach(f => {
44+
const name = f.name
45+
const tags = f.tags
46+
oldIcons[name] = { tags: Array(tags).join(',') }
47+
})
48+
49+
const location = require.resolve('@quasar/extras/mdi-v6/mdi-v6.css')
50+
const fileContents = readFile(location)
51+
52+
fileContents
53+
.split('\n')
54+
.forEach(line => {
55+
line = line.trim()
56+
if (line.startsWith('.')) {
57+
const pos = line.indexOf(':before')
58+
if (pos > 0) {
59+
line = line.slice(1, pos - 1)
60+
if (blacklisted.includes(line) === false) {
61+
if (oldIcons[line]) {
62+
const tags = oldIcons[line].tags.split(',').map(tag => {
63+
if (tag === '') return tag
64+
return "'" + tag + "'"
65+
}).join(', ')
66+
icons.push(`{ name: '${line}', tags: [${tags}] }`)
67+
}
68+
else {
69+
icons.push(`{ name: '${line}', tags: [] }`)
70+
}
71+
}
72+
}
73+
}
74+
})
75+
76+
if (icons.length === 0) {
77+
console.log(`${red('[error]')} ${name} icons parsed 0 icons...exiting`)
78+
process.exit(1)
79+
}
80+
81+
let output = 'export default {\n'
82+
output += ` name: '${name}',\n`
83+
output += ' icons: [\n'
84+
85+
icons.forEach((icon, index) => {
86+
if (index !== 0) {
87+
output += ',\n'
88+
}
89+
90+
output += ` ${icon}`
91+
})
92+
93+
output += '\n ]\n'
94+
output += '}\n'
95+
96+
writeFile(path.resolve(__dirname, outputLocation), output)
97+
console.log(`${blue('[icon]')} ${green(name + ':')} ${icons.length} generated`)

ui/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
"build:api": "node build/build.api.js",
3030
"icons:mdi-v4": "node build/icons/build.mdi-v4.js",
3131
"icons:mdi-v5": "node build/icons/build.mdi-v5.js",
32+
"icons:mdi-v6": "node build/icons/build.mdi-v6.js",
3233
"icons:ion": "node build/icons/build.ion.js",
3334
"icons:eva": "node build/icons/build.eva.js",
3435
"icons:themify": "node build/icons/build.themify.js",

ui/src/components/QIconPicker.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ const useIconPickerProps = {
1616
'ionicons-v4',
1717
'mdi-v4',
1818
'mdi-v5',
19+
'mdi-v6',
1920
'fontawesome-v5',
2021
'eva-icons',
2122
'themify',

ui/src/components/QIconPicker.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
"ionicons-v4",
2626
"mdi-v4",
2727
"mdi-v5",
28+
"mdi-v6",
2829
"fontawesome-v5",
2930
"eva-icons",
3031
"themify",

0 commit comments

Comments
 (0)