# 摸清了图标批量引入

## 给组件套壳,不在内部重新定义参数,参数会默认传递
main
expressgy 3 months ago
parent ca2bce89fe
commit f1f71bd0b4
  1. 24
      src/assets/custom.css
  2. 41
      src/components/AntDesignVue/CustomAntDesignVue/AntdModalTemplate/index.vue
  3. 8
      src/components/AntDesignVue/CustomAntDesignVue/Button/AckCreateAntdButton.vue
  4. 3
      src/components/AntDesignVue/CustomAntDesignVue/Button/CreateAntdButton.vue
  5. 52
      src/components/AntDesignVue/CustomAntDesignVue/IconSelect/index.vue
  6. 10
      src/components/AntDesignVue/CustomAntDesignVue/index.js
  7. 61
      src/components/AntDesignVue/Icon/asyncCustomIcon.js
  8. 80
      src/components/AntDesignVue/Icon/customIcon.js
  9. 8
      src/components/AntDesignVue/Icon/icon1/aigongju.svg
  10. 1
      src/components/AntDesignVue/Icon/icon1/beifen.svg
  11. 1
      src/components/AntDesignVue/Icon/icon1/beifenyuhuifu.svg
  12. 1
      src/components/AntDesignVue/Icon/icon1/bizhi.svg
  13. 1
      src/components/AntDesignVue/Icon/icon1/gouwu.svg
  14. 1
      src/components/AntDesignVue/Icon/icon1/guanyu.svg
  15. 1
      src/components/AntDesignVue/Icon/icon1/kuaijielan.svg
  16. 1
      src/components/AntDesignVue/Icon/icon1/lianjie.svg
  17. 1
      src/components/AntDesignVue/Icon/icon1/shangchuan.svg
  18. 1
      src/components/AntDesignVue/Icon/icon1/sheji.svg
  19. 1
      src/components/AntDesignVue/Icon/icon1/shijianriqi.svg
  20. 1
      src/components/AntDesignVue/Icon/icon1/sousuokuang.svg
  21. 1
      src/components/AntDesignVue/Icon/icon1/tiaozhuanzhida.svg
  22. 1
      src/components/AntDesignVue/Icon/icon1/tubiao.svg
  23. 1
      src/components/AntDesignVue/Icon/icon1/wangzhan.svg
  24. 1
      src/components/AntDesignVue/Icon/icon1/xiaoyouxi.svg
  25. 1
      src/components/AntDesignVue/Icon/icon1/yingyin.svg
  26. 1
      src/components/AntDesignVue/Icon/icon1/zhuti.svg
  27. 1
      src/components/AntDesignVue/Icon/icon1/zhuye.svg
  28. 1
      src/components/AntDesignVue/Icon/icon1/zidingyitubiao.svg
  29. 1
      src/components/AntDesignVue/Icon/icon1/zujian.svg
  30. 25
      src/components/AntDesignVue/Icon/index.js
  31. 49
      src/components/AntDesignVue/Icon/t.js
  32. 52
      src/components/AntDesignVue/Icon/test.js
  33. 10
      src/components/AntDesignVue/index.js
  34. 58
      src/views/Auth/Dict/DictForm.vue
  35. 21
      src/views/Auth/Dict/index.vue
  36. 18
      src/views/Auth/Dict/t.vue

@ -13,27 +13,31 @@
/* 模态框 */ /* 模态框 */
.ant-modal{ .ant-modal{
position: relative; position: relative;
max-height: 75vh; max-height: 65vh;
height: 900px; height: 900px;
overflow: hidden; padding: 24px 20px;
/*overflow: hidden;*/
.ant-modal-content{ .ant-modal-content{
position: relative; position: relative;
box-sizing: border-box; box-sizing: border-box;
max-height: 100%;
height: 100%; height: 100%;
overflow: hidden; overflow: hidden;
display: flex; display: flex;
box-sizing: border-box;
flex-direction: column; flex-direction: column;
.ant-modal-header{
flex-shrink: 0;
}
.ant-modal-body{ .ant-modal-body{
height: 100%; /*max-height: 100%;*/
/*height: 100%;*/
padding: 10px 0;
overflow: hidden; overflow: hidden;
& > *{ flex: 1 1;
position: relative;
height: 100%;
overflow: auto;
padding: 0 5px ;
} }
.ant-modal-footer{
flex-shrink: 0;
margin-top: 0;
} }
} }
} }

@ -0,0 +1,41 @@
<script setup name="AntdModalTemplate">
defineOptions({
name: 'AntdModalTemplate'
});
</script>
<template>
<div class="AntdModalTemplate">
<main>
<slot></slot>
</main>
<footer>
<div>
<ASpace>
<slot name="footer">xsxs</slot>
</ASpace>
</div>
</footer>
</div>
</template>
<style scoped lang="scss">
.AntdModalTemplate {
position: relative;
max-height: 100%;
display: flex;
flex-direction: column;
& > main {
position: relative;
max-height: 100%;
flex: 1;
overflow: auto;
}
& > footer {
position: relative;
flex-shrink: 0;
margin-top: 20px;display: flex;
flex-direction: row-reverse;
}
}
</style>

@ -1,7 +1,9 @@
<script setup name="AckCreateAntdButton"> <script setup name="AckCreateAntdButton">
defineOptions({
name: 'AckCreateAntdButton'
});
import { h, ref } from 'vue'; import { h, ref } from 'vue';
import { PlusOutlined } from '@ant-design/icons-vue'; import { CheckOutlined } from '@ant-design/icons-vue';
const canClick = ref(true); const canClick = ref(true);
const handleClick = () => { const handleClick = () => {
if (canClick.value) { if (canClick.value) {
@ -14,7 +16,7 @@ const handleClick = () => {
</script> </script>
<template> <template>
<AButton type="primary" :disabled="!canClick" @click="handleClick" :icon="h(PlusOutlined)">确认创建</AButton> <AButton type="primary" :loading="!canClick" @click="handleClick" :icon="h(CheckOutlined)">确认创建</AButton>
</template> </template>
<style scoped></style> <style scoped></style>

@ -1,4 +1,7 @@
<script setup name="CreateAntdButton"> <script setup name="CreateAntdButton">
defineOptions({
name: 'CreateAntdButton'
});
import { h } from 'vue'; import { h } from 'vue';
import { PlusOutlined } from '@ant-design/icons-vue'; import { PlusOutlined } from '@ant-design/icons-vue';
const props = defineProps({ const props = defineProps({

@ -0,0 +1,52 @@
<script setup name="IconSelect">
import { UserOutlined } from '@ant-design/icons-vue';
import { ref } from 'vue';
defineOptions({
name: 'IconSelect',
});
const option = [
{
label: '简单图标',
type: 'group',
icon: UserOutlined,
option: [
{
label: UserOutlined,
value: UserOutlined.name,
cname: UserOutlined.name,
},
],
},
// {
// label: '',
// type: 'group',
// icon: UserOutlined,
// option: IconList1.map(item => ({
// label: item,
// value: item.name,
// cname: item.cname,
// }))
// },
];
</script>
<template>
<ASelect showSearch>
<ASelectOptGroup v-for="item in option" :key="item.label">
<template #label>
<span>
<component :is="item.icon" />
{{ item.label }}
</span>
</template>
<ASelectOption class="ASelectOption" v-for="opt in item.option" :value="opt.value"><component :is="opt.label" /></ASelectOption>
</ASelectOptGroup>
</ASelect>
</template>
<style scoped lang="scss">
.ASelectOption {
background: #ed5565;
}
</style>

@ -13,14 +13,20 @@
import CreateAntdButton from './Button/CreateAntdButton.vue'; import CreateAntdButton from './Button/CreateAntdButton.vue';
import AckCreateAntdButton from './Button/AckCreateAntdButton.vue'; import AckCreateAntdButton from './Button/AckCreateAntdButton.vue';
import AntdModalTemplate from './AntdModalTemplate/index.vue';
import IconSelect from './IconSelect/index.vue';
// console.log(AntdModalTemplate);
// ! 全局导出自定义的Antd组件 // ! 全局导出自定义的Antd组件
export default function setupCustomAntdComponents(app) { export default function setupCustomAntdComponents(app) {
const customComponentList = [ const customComponentList = [
CreateAntdButton, // ! 主要添加按钮 CreateAntdButton, // ! 主要添加按钮
AckCreateAntdButton AckCreateAntdButton,
AntdModalTemplate,
IconSelect,
]; ];
for (let component of customComponentList) { for (let component of customComponentList) {
app.component(component.__name, component); app.component(component.name, component);
} }
} }

@ -0,0 +1,61 @@
// | ------------------------------------------------------------
// | @版本: version 0.1
// | @创建人: 【Nie-hotok】
// | @E-mail: x71291@outlook.com
// | @所在项目: hoto-auth-vue3
// | @文件描述: asyncCustomIcon.js -
// | @创建时间: 2024-07-04 00:01
// | @更新时间: 2024-07-04 00:01
// | @修改记录:
// | -*-*-*- (时间--修改人--修改说明) -*-*-*-
// | =
// | ------------------------------------------------------------
import { defineAsyncComponent, h } from 'vue';
const svgModules = import.meta.glob('./icon1/*.svg', { as: 'raw' });
// console.log(svgModules);
//
// for (const [path, importFunc] of Object.entries(svgModules)) {
//
// try {
// // 解析 Promise 以获取 SVG 文本内容
// const svgContent = await importFunc();
// // 这里你可以对 svgContent 进行处理,例如将其转换为 URL 或 Blob 对象,或者直接使用它
// console.log(path, svgContent); // 注意:可能需要根据实际情况访问正确的属性(如 .default)
// } catch (error) {
// console.error(`Failed to load SVG from ${path}`, error);
// }
// }
const svgComponentList = [];
for (const path in svgModules) {
// ! svg文件名
const name = path.match(/\/(\w+)\.svg/)[1];
// ! 异步组件
const asyncSvgComponent = defineAsyncComponent(() => {
console.log('A');
svgModules[path]().then((module) => {
console.log(module);
const svg = module.default || module;
const svgContent = svg.replace(/<\?xml.*?\?>|<!DOCTYPE.*?>/g, '');
return {
name,
cname: 'C' + name,
setup() {
return () =>
h('svg', {
innerHTML: svgContent,
class: 'svg-icon',
});
},
};
}).catch(e => {
console.log(e);
});
});
svgComponentList.push(asyncSvgComponent);
}
export const SvgComponentList = svgComponentList;

@ -0,0 +1,80 @@
// | ------------------------------------------------------------
// | @版本: version 0.1
// | @创建人: 【Nie-hotok】
// | @E-mail: x71291@outlook.com
// | @所在项目: hoto-auth-vue3
// | @文件描述: customIcon.js -
// | @创建时间: 2024-07-03 21:41
// | @更新时间: 2024-07-03 21:41
// | @修改记录:
// | -*-*-*- (时间--修改人--修改说明) -*-*-*-
// | =
// | ------------------------------------------------------------
import { defineComponent, h } from 'vue';
import Icon, { HomeOutlined } from '@ant-design/icons-vue';
console.log(HomeOutlined);
const svgContentPool1 = import.meta.glob('./icon1/*.svg', {
eager: true,
query: '?raw',
import: 'default',
});
const iconComponentList1 = [];
for (const path in svgContentPool1) {
const svgName = path.match(/\/(\w+)\.svg/)[1];
let svgContent = svgContentPool1[path].default || svgContentPool1[path];
svgContent = svgContent.replace(/<\?xml.*?\?>|<!DOCTYPE.*?>/g, '');
// 正则表达式,匹配并替换width和height属性为1em
const sizeReplacementRegex = /(width|height)="([^"]+)"/g;
svgContent = svgContent.replace(sizeReplacementRegex, (match, prop, value) => {
return `${prop}="1em"`;
});
const SvgComponent = defineComponent({
name: svgName,
cname: 'C' + svgName,
setup() {
return () =>
h('div', {
innerHTML: svgContent,
attrs: { viewBox: '0 0 1024 1024' },
});
},
});
// name: SvgComponent.name,
// cname: SvgComponent.cname,
// console.log(SvgComponent);
const icon = defineComponent({
name: SvgComponent.name,
setup(props) {
return () =>
h(Icon, {
...props,
component: SvgComponent,
});
},
});
// iconComponentList1.push(SvgComponent);
iconComponentList1.push(icon);
}
export const IconComponentList1 = iconComponentList1;
export const A = defineComponent({
name: 'AntDesignVue',
setup() {
return () =>
h(Icon, {
component: HomeOutlined,
});
},
});
export const B = defineComponent({
name: 'AntDesignVueB',
setup() {
return () =>
h(Icon, {
component: iconComponentList1[0],
});
},
});
export const C = iconComponentList1[0];

@ -0,0 +1,8 @@
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg class="icon" fill="currentColor" width="1em" height="1em" viewBox="0 0 1024 1024" version="1.1"
xmlns="http://www.w3.org/2000/svg">
<path d="M362.8 553.9c23.5 0 42.6-19.1 42.6-42.6V213.4c0-46.9 38.2-85.1 85.1-85.1s85.1 38.2 85.1 85.1V245c0 23.5 19 42.6 42.6 42.6 23.5 0 42.6-19.1 42.6-42.6v-31.5c0-93.9-76.3-170.2-170.2-170.2s-170.2 76.4-170.2 170.2v297.9c-0.2 23.5 18.8 42.5 42.4 42.5zM660.7 468.8c-23.5 0-42.6 19.1-42.6 42.6v297.9c0 46.9-38.2 85.1-85.1 85.1s-85.1-38.2-85.1-85.1v-31.5c0-23.5-19-42.6-42.6-42.6-23.5 0-42.6 19.1-42.6 42.6v31.5c0 93.9 76.3 170.2 170.2 170.2s170.2-76.4 170.2-170.2V511.4c0.1-23.5-18.9-42.6-42.4-42.6z"
fill="#1A1A1A"/>
<path d="M809.6 319.8H511.7c-23.5 0-42.6 19.1-42.6 42.6s19 42.6 42.6 42.6h297.9c46.9 0 85.1 38.2 85.1 85.1s-38.2 85.1-85.1 85.1h-31.5c-23.5 0-42.6 19.1-42.6 42.6s19 42.6 42.6 42.6h31.5c93.9 0 170.2-76.4 170.2-170.2s-76.3-170.4-170.2-170.4zM554.3 660.3c0-23.5-19-42.6-42.6-42.6H213.8c-46.9 0-85.1-38.2-85.1-85.1s38.2-85.1 85.1-85.1h31.5c23.5 0 42.6-19.1 42.6-42.6s-19-42.6-42.6-42.6h-31.5c-93.9 0-170.2 76.4-170.2 170.2s76.3 170.2 170.2 170.2h297.9c23.5 0.2 42.6-18.9 42.6-42.4z"
fill="#1A1A1A"/>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg class="icon" width="200px" height="200.00px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path d="M636.3 590.4L529.6 483.8c-9.1-9.1-23.7-9.1-32.8 0L390.1 590.4c-9.1 9.1-9.1 23.7 0 32.8 9.1 9.1 23.7 9.1 32.8 0l67.1-67.1v234.8c0 12.8 10.4 23.2 23.2 23.2 12.8 0 23.2-10.4 23.2-23.2V556.2l67.1 67.1c4.5 4.5 10.5 6.8 16.4 6.8s11.9-2.3 16.4-6.8c9.1-9.1 9.1-23.8 0-32.9zM998.7 526.5c-96.4-153.1-171.1-186.7-250.4-180.6-45.3-109.1-152-181.2-271.2-181.2-135 0-252.4 92.5-284.9 222-121.4 26-204.4 142.9-187 268.2 16.2 117.3 122.1 205.6 246.2 205.6h149.1c12.8 0 23.2-10.4 23.2-23.2s-10.4-23.2-23.2-23.2H251.4c-101.1 0-187.2-71.2-200.2-165.6C36.6 543 110 444.8 214.9 429.8c9.8-1.4 17.6-8.9 19.5-18.6C256.8 295.2 358.9 211 477.1 211c105.6 0 199.6 67.2 233.9 167.3 3.6 10.5 14.5 16.9 25.2 15.4 57.8-8.2 122.6-2.6 223.3 157.4 12.4 19.7 18.5 42.3 17.3 63.7-6 105.1-89.7 190.3-194.7 198.3-1.6 0.1-3.1 0.4-4.5 0.9H658.8c-12.8 0-23.2 10.4-23.2 23.2s10.4 23.2 23.2 23.2h125.1c2.8 0 5.5-0.5 8-1.5C917 846.3 1016 743.6 1023.1 617.5c1.8-30.9-6.9-63.3-24.4-91z" /></svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg class="icon" width="200px" height="200.00px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path d="M840.4 186.2c0-18.1-14.7-32.8-32.8-32.8H217.8c-18.1 0-32.8 14.7-32.8 32.8s14.7 32.8 32.8 32.8h589.8c18.1 0 32.8-14.7 32.8-32.8zM863.5 556.2L535.8 228.6c-6.4-6.4-14.8-9.6-23.2-9.6s-16.8 3.2-23.2 9.6L161.8 556.2c-12.8 12.8-12.8 33.5 0 46.3 12.8 12.8 33.5 12.8 46.3 0l271.8-271.8v510.7c0 18.1 14.7 32.8 32.8 32.8s32.8-14.7 32.8-32.8V330.8l271.8 271.8c6.4 6.4 14.8 9.6 23.2 9.6 8.4 0 16.8-3.2 23.2-9.6 12.6-12.8 12.6-33.6-0.2-46.4z" /></svg>

After

Width:  |  Height:  |  Size: 704 B

@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg class="icon" width="200px" height="200.00px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path d="M261.9 492.9c20.6 11.9 46 11.9 66.6 0 20.6-11.9 33.3-33.9 33.3-57.6 0-36.8-29.8-66.5-66.6-66.5s-66.5 29.8-66.5 66.5c0 23.8 12.7 45.7 33.2 57.6zM804 153.4H221.4c-78.3 0-142 63.7-142 142v436.9c0 78.3 63.7 142 142 142H804c78.3 0 142-63.7 142-142V295.4c-0.1-78.3-63.7-142-142-142z m-659.1 142c0-42.2 34.3-76.5 76.4-76.5H804c42.1 0 76.4 34.3 76.4 76.5v331.1l-95.3-86.2-13.6-9.7c-71.9-46.1-164.2-45.1-233.9 1.3l-385 232.6c-4.7-9.9-7.7-20.6-7.7-32.2V295.4zM804 808.8H221.4c-4.1 0-7.6-1.7-11.4-2.3l362.8-219.2c49.5-32.9 113.6-33.4 162.8-1.9l143.7 128.5 1.2-1.3v19.8c-0.1 42.1-34.4 76.4-76.5 76.4z" /></svg>

After

Width:  |  Height:  |  Size: 865 B

@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg class="icon" width="200px" height="200.00px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path d="M959.8 711.6l-63.6-450.2c-10.2-75.4-76.8-132-154.7-132H282.2c-78.2 0-144.7 56.6-154.9 131.7L63.7 711.6c-6.4 45.7 6.4 91.6 35.1 126.1 29.4 35.3 72.8 55.6 119.1 55.6h587.7c46.2 0 89.6-20.2 119.1-55.5 28.7-34.6 41.5-80.6 35.1-126.2z m-100.5 71.6c-13.3 15.9-32.8 25-53.7 25H217.8c-20.9 0-40.4-9.1-53.7-25-13.4-16.1-19.3-37.8-16.2-59.7l63.7-450.7c4.4-32.7 35.4-58.3 70.6-58.3h458.9c35.2 0 66.2 25.5 70.7 58.5l63.6 450.4c3.2 22-2.8 43.7-16.1 59.8z" fill="#333333" /><path d="M661.4 357.2c-21.1-10.1-46.6-1-56.6 20.2-17 35.8-53.5 58.9-93.1 58.9-39.6 0-76.1-23.1-93.1-58.9-10.1-21.2-35.5-30.3-56.6-20.2-21.2 10.1-30.3 35.4-20.2 56.7 30.9 65.3 97.6 107.6 169.9 107.6s139.1-42.2 170-107.6c10.1-21.3 1-46.7-20.3-56.7z" fill="#333333" /></svg>

After

Width:  |  Height:  |  Size: 998 B

@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg class="icon" width="200px" height="200.00px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path d="M512.7 87.9c-235.3 0-426 190.7-426 426s190.7 426 426 426 426-190.7 426-426-190.8-426-426-426z m0 786.4c-198.8 0-360.5-161.7-360.5-360.5s161.7-360.5 360.5-360.5S873.2 315 873.2 513.8 711.4 874.3 512.7 874.3zM512.7 481.1c-18.1 0-32.8 14.7-32.8 32.8V776c0 18.1 14.7 32.8 32.8 32.8s32.8-14.7 32.8-32.8V513.9c-0.1-18.1-14.7-32.8-32.8-32.8zM479.9 284.5h65.5V350h-65.5z" /></svg>

After

Width:  |  Height:  |  Size: 639 B

@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg class="icon" width="200px" height="200.00px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path d="M250.5 350c42.7 0 78.8-27.4 92.3-65.5h497.6c18.1 0 32.8-14.7 32.8-32.8S858.5 219 840.4 219H342.8c-13.5-38.1-49.5-65.5-92.3-65.5-54.3 0-98.3 44-98.3 98.3s44 98.2 98.3 98.2zM840.4 743.3H342.8c-13.5-38.1-49.5-65.5-92.3-65.5-54.3 0-98.3 44-98.3 98.3s44 98.3 98.3 98.3c42.7 0 78.8-27.4 92.3-65.5h497.6c18.1 0 32.8-14.7 32.8-32.8s-14.7-32.8-32.8-32.8zM774.8 415.6c-42.7 0-78.8 27.4-92.3 65.5H185c-18.1 0-32.8 14.7-32.8 32.8s14.7 32.8 32.8 32.8h497.6c13.5 38.1 49.5 65.5 92.3 65.5 54.3 0 98.3-44 98.3-98.3s-44.1-98.3-98.4-98.3z" /></svg>

After

Width:  |  Height:  |  Size: 797 B

@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg class="icon" width="200px" height="200.00px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path d="M931.9 91.4C878.4 37.7 804.3 6.9 728.4 6.9c-75.8 0-149.9 30.8-203.4 84.5l-68.5 68.5c-5.1 4.9-9.9 10-14.4 15.5-12.5 15.1-10.3 37.5 4.8 50 15.1 12.4 37.5 10.4 50-4.8 2.7-3.3 5.6-6.4 9.2-9.9l69.2-69.1c80.7-80.9 223.1-83.5 308.9 2.7 40.4 40.2 63.6 96.1 63.6 153.1s-23.2 112.9-63.7 153.2L748.6 586.2c-2.8 2.8-5.8 5.5-9.6 8.8-33.9 30.1-76.1 48.8-120.9 53.9l-23.6-0.1c-57.7-0.1-111.8-22.7-152.6-63.6L409 552.3c-13.9-13.9-36.4-13.9-50.2 0-13.9 13.8-13.9 36.4 0 50.2l32.8 32.8c48.4 48.7 111.1 77.8 178.7 83.5l1.1 2.6 23.8-0.1c70.4-0.4 138.2-26.4 190-72.4 4.9-4.1 9.6-8.4 13.7-12.7l135.3-135.4c53.8-53.5 84.6-127.6 84.6-203.5s-30.7-150-86.9-205.9zM527.7 805.5c-2.7 3.3-5.6 6.4-9.2 9.9l-69.2 69.2c-40.7 41-94.9 63.5-152.7 63.5h-0.4c-56.8 0-112.4-23.1-155.2-66.2-40.4-40.2-63.6-96.1-63.6-153.1 0-57.9 22.6-112.3 63.7-153.2L276.7 440c2.8-2.8 5.7-5.5 9.6-8.8 85.4-75.6 215.8-71.8 296 8.7l33 33.8c13.9 14.1 36.3 14.3 50.2 0.6 14.1-13.7 14.4-36.2 0.7-50.2L632.8 390c-107.2-107.3-280.2-112.5-392.9-12.7-4.9 4.1-9.4 8.4-13.7 12.7L90.9 525.3C36.4 579.6 6.3 651.8 6.3 728.8c0 75.9 30.8 150 87 205.9 53.3 53.7 127.2 84.5 202.8 84.5h0.6c76.8 0 148.9-30 202.9-84.4l68.5-68.5c5.1-4.9 9.9-10 14.4-15.5 12.5-15.1 10.3-37.5-4.8-50-15.2-12.5-37.5-10.4-50 4.7z" /></svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg class="icon" width="200px" height="200.00px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path d="M257.5 358.1l216.4-216.4v575.6c0 22.1 17.9 39.9 39.9 39.9 22.1 0 39.9-17.9 39.9-39.9V141.7l216.4 216.4c7.8 7.8 18 11.7 28.2 11.7s20.4-3.9 28.2-11.7c15.6-15.6 15.6-40.9 0-56.5L542.1 17c-15.6-15.6-40.9-15.6-56.5 0L201.1 301.6c-15.6 15.6-15.6 40.9 0 56.5s40.8 15.6 56.4 0zM979.4 642.6c-22.1 0-39.9 17.9-39.9 39.9v219.8c0 20.8-16.9 37.6-37.6 37.6H126c-20.8 0-37.7-16.9-37.7-37.6V682.5c0-22.1-17.9-39.9-39.9-39.9s-40 17.9-40 39.9v219.8c0 64.8 52.7 117.5 117.6 117.5h775.8c64.8 0 117.5-52.7 117.5-117.5V682.5c0-22-17.8-39.9-39.9-39.9z" /></svg>

After

Width:  |  Height:  |  Size: 805 B

@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg class="icon" width="200px" height="200.00px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path d="M936.8 678.5L763.4 505.1l149.5-149.5c8-8 12.5-18.8 12.5-30.1s-4.5-22.1-12.5-30.1L727.3 109.9c-16.6-16.6-43.6-16.6-60.2 0L517.7 259.4 344.3 86c-16-16-44.2-16-60.2 0L86.6 283.5c-16.6 16.6-16.6 43.6 0 60.2L260 517.1 110.5 666.6c-8 8-12.5 18.8-12.5 30.1v185.5c0 23.5 19 42.6 42.6 42.6h185.5c11.3 0 22.1-4.5 30.1-12.5l149.5-149.5 173.4 173.4c8.3 8.3 19.2 12.5 30.1 12.5s21.8-4.2 30.1-12.5l197.5-197.5c16.6-16.6 16.6-43.6 0-60.2zM277.5 414.2l70.5-70.5c16.6-16.6 16.6-43.6 0-60.2s-43.6-16.6-60.2 0L217.3 354l-40.4-40.4 137.3-137.3 143.3 143.3-137.3 137.3-42.7-42.7z m31 425.4H183.2V714.3l514-514.1 125.4 125.3-514.1 514.1z m400.7 6.3l-48.6-48.6 70.6-70.5c16.6-16.6 16.6-43.6 0-60.2s-43.6-16.6-60.2 0l-70.6 70.5-34.5-34.5 137.3-137.3 143.3 143.3-137.3 137.3z" fill="#333333" /></svg>

After

Width:  |  Height:  |  Size: 1.0 KiB

@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg class="icon" width="200px" height="200.00px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path d="M512.7 62.2C263.6 62.2 61 264.8 61 513.9s202.6 451.7 451.7 451.7S964.4 763 964.4 513.9c-0.1-249.1-202.7-451.7-451.7-451.7z m0 837.8c-212.9 0-386.1-173.2-386.1-386.2 0-212.9 173.2-386.1 386.1-386.1S898.8 301 898.8 513.9c0 212.9-173.2 386.1-386.1 386.1z" fill="#231815" /><path d="M754.2 578.1l-223.6-83.3v-210c0-18.1-14.7-32.8-32.8-32.8S465 266.7 465 284.8v222.7c-0.7 19.4 10.9 37 29.1 43.7l237.2 88.4c3.8 1.4 7.7 2 11.5 2 13.3 0 25.8-8.1 30.7-21.3 6.3-17-2.3-35.8-19.3-42.2z" fill="#231815" /></svg>

After

Width:  |  Height:  |  Size: 766 B

@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg class="icon" width="200px" height="200.00px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path d="M929.1 883.9L779.9 734.8c58-68.5 93.2-157 93.2-253.7 0-216.8-176.4-393.2-393.2-393.2S86.7 264.3 86.7 481.1s176.4 393.2 393.2 393.2c96.6 0 185.1-35.2 253.7-93.2l149.2 149.2c6.4 6.4 14.8 9.6 23.2 9.6s16.8-3.2 23.2-9.6c12.7-12.8 12.7-33.6-0.1-46.4zM152.2 481.1c0-180.7 147-327.7 327.7-327.7s327.7 147 327.7 327.7-147 327.7-327.7 327.7-327.7-147-327.7-327.7z" fill="#231815" /></svg>

After

Width:  |  Height:  |  Size: 646 B

@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg class="icon" width="200px" height="200.00px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path d="M786.3 88.5H621.6c-21.5 0-38.8 17.4-38.8 38.8s17.4 38.8 38.8 38.8h164.7c85.6 0 155.3 69.6 155.3 155.2v388.2c0 85.6-69.7 155.2-155.3 155.2H618.9c-21.5 0-38.8 17.4-38.8 38.8s17.4 38.8 38.8 38.8h167.5c128.4 0 232.9-104.5 232.9-232.8V321.4c-0.1-128.4-104.6-232.9-233-232.9zM430.3 864.8H236.4c-85.6 0-155.2-69.6-155.2-155.2V321.4c0-85.6 69.7-155.2 155.2-155.2h191.1c21.5 0 38.8-17.4 38.8-38.8S449 88.5 427.5 88.5H236.4C108 88.5 3.6 193 3.6 321.4v388.2C3.6 838 108 942.4 236.4 942.4h193.8c21.5 0 38.8-17.4 38.8-38.8s-17.3-38.8-38.7-38.8zM581 678.8c7.6 7.6 17.5 11.4 27.4 11.4s19.9-3.8 27.4-11.4L771.6 543c15.2-15.2 15.2-39.7 0-54.9L635.9 352.2c-15.2-15.2-39.7-15.2-54.9 0s-15.2 39.7 0 54.9l69.6 69.6H259.1c-21.5 0-38.8 17.4-38.8 38.8 0 21.5 17.4 38.8 38.8 38.8h391.5L581 623.9c-15.2 15.1-15.2 39.7 0 54.9z" /></svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg class="icon" width="200px" height="200.00px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path d="M108.1 742.5c0 97.2 78.8 175.9 175.9 175.9 97.1 0 175.9-78.8 175.9-175.9V566.6H284c-97.2 0-175.9 78.8-175.9 175.9z m286.3 0c0 60.9-49.5 110.4-110.4 110.4s-110.4-49.5-110.4-110.4c0-60.9 49.5-110.4 110.4-110.4h110.4v110.4zM741.3 566.6H565.4v175.9c0 97.2 78.8 175.9 175.9 175.9 97.2 0 175.9-78.8 175.9-175.9 0.1-97.1-78.7-175.9-175.9-175.9z m0 286.3c-60.9 0-110.4-49.5-110.4-110.4V632.2h110.4c60.9 0 110.4 49.5 110.4 110.4 0 60.8-49.5 110.3-110.4 110.3zM284 109.3c-97.2 0-175.9 78.8-175.9 175.9 0 97.2 78.8 175.9 175.9 175.9h175.9V285.2c0-97.2-78.8-175.9-175.9-175.9z m110.4 286.3H284c-60.9 0-110.4-49.5-110.4-110.4 0-60.9 49.5-110.4 110.4-110.4s110.4 49.5 110.4 110.4v110.4zM917.3 285.2c0-97.1-78.8-175.9-175.9-175.9-97.1 0-175.9 78.8-175.9 175.9v175.9h175.9c97.1 0 175.9-78.8 175.9-175.9z m-286.3 0c0-60.9 49.5-110.4 110.4-110.4 60.9 0 110.4 49.5 110.4 110.4 0 60.9-49.5 110.4-110.4 110.4H631V285.2z" /></svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg class="icon" width="200px" height="200.00px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path d="M511.1 8.5C232.5 8.5 6.7 234.4 6.7 512.9s225.8 504.4 504.4 504.4 504.4-225.8 504.4-504.4S789.6 8.5 511.1 8.5z m441.3 504.4H763.3c0-173.8-43.9-327-110.8-417.7 174.1 59.1 299.9 223.9 299.9 417.7zM511.1 954.2c-81.7 0-171.9-158.1-186.8-378.3h373.6C683 796.2 592.7 954.2 511.1 954.2zM321.9 512.9c0-252.6 99.9-441.3 189.1-441.3s189.1 188.7 189.1 441.3H321.9z m47.8-417.7c-66.9 90.7-110.8 243.9-110.8 417.7H69.8c0-193.8 125.8-358.6 299.9-417.7zM74.8 576h186.3c9.2 147.4 50 275.1 108.6 354.6C214.8 878 98.7 741.9 74.8 576z m577.7 354.6c58.6-79.5 99.4-207.3 108.6-354.6h186.3c-23.9 165.9-140.1 302-294.9 354.6z" /></svg>

After

Width:  |  Height:  |  Size: 878 B

@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg class="icon" width="200px" height="200.00px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path d="M639.4 128.3H384c-211.2 0-383 171.8-383 383s171.8 383 383 383h255.4c211.2 0 383-171.8 383-383s-171.8-383-383-383z m0 681H384c-164.3 0-297.9-133.6-297.9-297.9s133.7-298 297.9-298h255.4c164.3 0 297.9 133.6 297.9 297.9s-133.7 298-297.9 298z" fill="#333333" /><path d="M469.1 468.8H384v-85.1c0-23.4-19.1-42.6-42.6-42.6-23.4 0-42.6 19.2-42.6 42.6v85.1h-85.1c-23.4 0-42.6 19.2-42.6 42.6 0 23.4 19.1 42.6 42.6 42.6h85.1v85c0 23.4 19.1 42.6 42.6 42.6 23.4 0 42.6-19.2 42.6-42.6v-85.1h85.1c23.4 0 42.6-19.2 42.6-42.6 0-23.4-19.1-42.5-42.6-42.5z" fill="#333333" /><path d="M724.5 383.7m-42.6 0a42.6 42.6 0 1 0 85.2 0 42.6 42.6 0 1 0-85.2 0Z" fill="#333333" /><path d="M724.5 639m-42.6 0a42.6 42.6 0 1 0 85.2 0 42.6 42.6 0 1 0-85.2 0Z" fill="#333333" /><path d="M639.4 511.4m-42.6 0a42.6 42.6 0 1 0 85.2 0 42.6 42.6 0 1 0-85.2 0Z" fill="#333333" /><path d="M809.6 511.4m-42.6 0a42.6 42.6 0 1 0 85.2 0 42.6 42.6 0 1 0-85.2 0Z" fill="#333333" /></svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg class="icon" width="200px" height="200.00px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path d="M767.1 149.6H256.4c-117.3 0-212.8 95.5-212.8 212.8v297.9c0 117.3 95.5 212.8 212.8 212.8h510.7c117.3 0 212.8-95.5 212.8-212.8V362.4c0-117.3-95.5-212.8-212.8-212.8z m127.6 510.7c0 70.4-57.3 127.7-127.7 127.7H256.4c-70.4 0-127.7-57.3-127.7-127.7V362.4c0-70.4 57.3-127.7 127.7-127.7h510.7c70.4 0 127.7 57.3 127.7 127.7v297.9z" fill="#333333" /><path d="M639.1 437.5l-140.2-81c-26.7-15.5-58.7-15.4-85.3 0-26.7 15.4-42.7 43.1-42.7 73.9v161.9c0 30.8 16 58.5 42.7 73.9 13.3 7.7 28 11.6 42.7 11.6 14.6 0 29.3-3.8 42.6-11.6l140.2-81c26.7-15.4 42.7-43.1 42.7-73.9s-16-58.4-42.7-73.8z m-42.6 74l-140.6 80.8 0.3-162.1 140.2 81 21.3-36.9-21.2 37.2z" fill="#333333" /></svg>

After

Width:  |  Height:  |  Size: 926 B

@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg class="icon" width="200px" height="200.00px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path d="M750.3 128.8h0.3-0.3m-459.2 29.3C326.7 227 397.9 265.8 491 265.8c10.9 0 19-0.5 25.1-1.1 4.8 0.6 10.7 1.1 24.6 1.1 91.8 0 162-38.7 197.2-107.5l218.9 189.5c0.8 1.5 2.3 5.1 1.2 10.1-3 13.8-23.5 30.8-55 45.5-0.9 0.4-1.8 0.8-2.6 1.3-4.4 2.2-40.5 20.4-58.4 28.9-3.5 1.7-7.5 3.3-11.8 5-12.1 4.9-23.8 9.9-33.7 16.8-20.5 14.2-31.2 38.7-27.6 63.4 13.2 90.7 29.2 287.8 30 298.2-0.3 1.5-1.6 5.6-6.6 11.3-18.3 20.8-78.5 55.6-276.3 55.6-201.6 0-262.5-35.1-280.9-56-6-6.8-6.3-11.1-6.1-13.1 0.1-1.9 16.5-202.9 30.2-295.7 3.7-24.9-7.2-49.6-28-63.8-10-6.8-21.8-11.8-35.1-17.1-3.8-1.5-7.5-3-10.9-4.6-20-9.4-61.4-29.9-63.2-30.8-31.4-14.4-51.8-31.2-54.8-45-1-4.8 0.4-8.4 1.2-9.8l222.7-189.9m438.3-79.8c-3.9 0-7.7 0.5-11.5 1.6-14 3.9-25.2 14.5-29.8 28.2-26.7 80.2-103.8 92.1-147.4 92.1-11.4 0-15-0.4-18.8-0.9-1.9-0.3-3.9-0.4-5.9-0.4-1.9 0-3.8 0.1-5.6 0.3-0.1 0-7.6 1-19.4 1-44.5 0-123.1-12-150.2-92.3-4.6-13.7-15.7-24.2-29.7-28.1-3.8-1.1-7.7-1.6-11.6-1.6-10.3 0-20.3 3.6-28.3 10.5L23.9 299.9c-1.6 1.4-3.1 2.9-4.6 4.5C7.5 318-3 342.8 3.2 371.6c7.7 35.9 38.9 66.7 91.5 90.9 0 0 42.3 21 62.7 30.6 5 2.3 10 4.4 15.1 6.4 6.2 2.5 16.8 6.8 21.8 10.2-13.8 93.4-30.2 293.8-30.7 300.3-0.9 7.4-2.1 33.6 22.3 61.3 46.3 52.6 154.3 78.2 330.1 78.2 172.9 0 279.3-25.4 325.5-77.8 24.6-27.9 23.5-54.3 22.7-59.7-0.7-8.5-16.8-208.3-30.5-302.6 4.9-3.4 15.3-7.6 21.3-10.1 5.4-2.2 10.5-4.3 14.9-6.4 19.8-9.5 60.7-30 60.7-30 53-24.7 83.8-55.3 91.5-91.1 6.2-28.7-4.1-53.5-15.9-67.2-1.4-1.6-2.9-3.1-4.5-4.5L757.9 88.9c-8-6.9-18.1-10.6-28.5-10.6z" /></svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg class="icon" width="200px" height="200.00px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path d="M511.7 170.5c13.1 0 24.9 5.1 34.1 14.6l295.4 307.3c8.6 8.9 11 15.5 11.4 18.5-0.9 0.3-2.7 0.8-5.5 0.8h-6.7c-47 0-85.1 38.1-85.1 85.1v199.6c0 30.3-20.5 55.9-44.8 55.9h-77.1V646.9c0.4-22.8-8.4-44.8-24.4-61.1-16-16.3-37.9-25.4-60.7-25.4h-73c-22.7 0-44.5 9.9-60.4 26-16 16.1-24.9 38.8-24.7 61.5v204.5h-77.1c-24.3 0-44.8-25.6-44.8-55.8V596.8c0-47-38.1-85.1-85.1-85.1h-6.7c-2.7 0-4.4-0.4-5.4-1 0.5-3.1 3-9.6 11.4-18.3l295.3-307.2c9-9.6 20.8-14.7 33.9-14.7m0-85.1c-36.2 0-70.1 14.5-95.4 40.8L120.9 433.4c-39.2 40.8-40.5 84.1-28.6 111.1 14.5 32.8 45.9 52.3 84 52.3h6.7v199.6c0 77.7 58.3 141 129.9 141h125.7c20.2 0 36.5-16.5 36.5-36.8V650.5v-5h73v255.1c0 20.3 16.4 36.8 36.5 36.8h125.7c71.6 0 129.9-63.2 129.9-141V596.8h6.7c38.2 0 69.6-19.6 84-52.2 12-26.9 10.8-70.3-28.6-111.2L607.1 126.1c-25.3-26.3-59.2-40.7-95.4-40.7z" fill="#272636" /></svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg class="icon" width="200px" height="200.00px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path d="M258.9 71.6c-104.5 0-189.1 84.7-189.1 189.1s84.7 189.1 189.1 189.1H448V260.7c0-104.4-84.6-189.1-189.1-189.1zM385 386.8H258.9c-69.5 0-126.1-56.6-126.1-126.1s56.6-126.1 126.1-126.1S385 191.2 385 260.7v126.1zM952.4 260.7c0-104.5-84.7-189.1-189.1-189.1s-189.1 84.7-189.1 189.1v189.1h189.1c104.4 0.1 189.1-84.6 189.1-189.1z m-315.2 0c0-69.5 56.6-126.1 126.1-126.1s126.1 56.6 126.1 126.1-56.6 126.1-126.1 126.1H637.2V260.7zM69.8 765.1c0 104.5 84.7 189.1 189.1 189.1S448 869.6 448 765.1V576H258.9c-104.5 0-189.1 84.6-189.1 189.1z m315.2 0c0 69.5-56.6 126.1-126.1 126.1s-126.1-56.6-126.1-126.1S189.4 639 258.9 639H385v126.1zM763.3 576H574.1v189.1c0 104.5 84.7 189.1 189.1 189.1s189.1-84.7 189.1-189.1S867.7 576 763.3 576z m0 315.2c-69.5 0-126.1-56.6-126.1-126.1V639h126.1c69.5 0 126.1 56.6 126.1 126.1s-56.6 126.1-126.1 126.1z" /></svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg class="icon" width="200px" height="200.00px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path d="M930.2 510.2l-419 228.3L92 510.2c-15.3-8.2-34.4-2.6-42.8 12.6-8.3 15.3-2.6 34.4 12.6 42.8l434.3 236.5c4.7 2.5 9.9 3.8 15.1 3.8 5.2 0 10.4-1.3 15.1-3.8l434.1-236.5c15.3-8.4 20.9-27.5 12.6-42.8-8.4-15.2-27.5-20.8-42.8-12.6zM930.2 723.7l-419 228.2L92 723.7c-15.3-8.2-34.4-2.6-42.8 12.6-8.3 15.3-2.6 34.4 12.6 42.8l434.3 236.4c4.7 2.5 9.9 3.8 15.1 3.8 5.2 0 10.4-1.3 15.1-3.8l434.1-236.4c15.3-8.4 20.9-27.5 12.6-42.8-8.4-15.3-27.5-20.8-42.8-12.6zM86.7 383.1l389.4 212.2 4.5 2.5c0.7 0.4 1.4 0.7 2.2 1.1l5.4 2.3c7.3 2.8 15 4.2 22.8 4.2 10.3 0 20.4-2.5 31-8.1l393.3-214.2c25.4-14 41.3-43.5 41.5-77 0-33.5-15.9-63-41.6-77.3l-392-213.6-1.4-0.8c-0.5-0.2-0.9-0.5-1.4-0.7l-6.5-3c-17.3-6.8-36.9-5.5-53.8 3.6L86.9 228.8c-25.2 13.7-41.6 44.1-41.6 77.3 0 33.4 15.9 62.9 41.4 77z m30.4-98.9L506.6 72l12.4 1.8 385.9 210.4c3.7 2 8.9 10.2 8.9 21.8-0.1 11.8-5.3 20-8.8 21.9L515.2 539.4l-12.1-1.2-385.9-210.3c-3.7-2-8.8-10.2-8.8-21.8 0-11.8 5-19.9 8.7-21.9z" /></svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

@ -0,0 +1,25 @@
// | ------------------------------------------------------------
// | @版本: version 0.1
// | @创建人: 【Nie-hotok】
// | @E-mail: x71291@outlook.com
// | @所在项目: hoto-auth-vue3
// | @文件描述: index.js -
// | @创建时间: 2024-07-03 21:18
// | @更新时间: 2024-07-03 21:18
// | @修改记录:
// | -*-*-*- (时间--修改人--修改说明) -*-*-*-
// | =
// | ------------------------------------------------------------
import { MyIcon } from './customIcon.js';
// ! 全局导出Antd图标组件
export default function setupIconAntdComponents(app) {
// const iconComponentList = [
// { name: '', component: ''}
// ];
// for (let item of iconComponentList) {
// app.component(item.name, item.component);
// }
app.component('MyIcon', MyIcon);
}

@ -0,0 +1,49 @@
// | ------------------------------------------------------------
// | @版本: version 0.1
// | @创建人: 【Nie-hotok】
// | @E-mail: x71291@outlook.com
// | @所在项目: hoto-auth-vue3
// | @文件描述: customIcon.js -
// | @创建时间: 2024-07-03 21:41
// | @更新时间: 2024-07-03 21:41
// | @修改记录:
// | -*-*-*- (时间--修改人--修改说明) -*-*-*-
// | =
// | ------------------------------------------------------------
import { defineComponent, h } from 'vue';
import Icon, { HomeOutlined } from '@ant-design/icons-vue';
const svgContentPool1 = import.meta.glob('./icon1/*.svg', {
eager: true,
query: '?raw',
import: 'default'
});
const iconComponentList1 = [];
for (const path in svgContentPool1) {
const svgName = path.match(/\/(\w+)\.svg/)[1];
let svgContent = svgContentPool1[path].default || svgContentPool1[path];
svgContent = svgContent.replace(/<\?xml.*?\?>|<!DOCTYPE.*?>/g, '');
const SvgComponent = defineComponent({
name: svgName,
cname: 'C' + svgName,
setup() {
return () =>
h('div', {
innerHTML: svgContent, attrs: { viewBox: '0 0 1024 1024' }
});
},
});
// name: SvgComponent.name,
// cname: SvgComponent.cname,
// console.log(SvgComponent);
const icon = defineComponent({
name: SvgComponent.name,
setup() {
return () => h(Icon, {}, HomeOutlined);
},
});
// iconComponentList1.push(SvgComponent);
iconComponentList1.push(Icon);
}
export const IconComponentList1 = iconComponentList1;

@ -0,0 +1,52 @@
// | ------------------------------------------------------------
// | @版本: version 0.1
// | @创建人: 【Nie-hotok】
// | @E-mail: x71291@outlook.com
// | @所在项目: hoto-auth-vue3
// | @文件描述: test.js -
// | @创建时间: 2024-07-03 22:43
// | @更新时间: 2024-07-03 22:43
// | @修改记录:
// | -*-*-*- (时间--修改人--修改说明) -*-*-*-
// | =
// | ------------------------------------------------------------
import { defineAsyncComponent, defineComponent, h } from 'vue';
const iconPool = import.meta.glob('./icon1/*.svg', { eager: true, as: 'raw'});
// const iconPool = import.meta.glob('./icon1/*.svg', );
const nameList = [];
const componentList = [];
for (const path in iconPool) {
const name = path.match(/\/(\w+)\.svg/)[1];
nameList.push(name);
const componentConfig = iconPool[path].default || iconPool[path];
const svgContent = componentConfig.replace(/<\?xml.*?\?>|<!DOCTYPE.*?>/g, '');
// console.log(svgContent);
const SvgComponent = defineComponent({
name,
// setup() {
// return () => h('div',svgContent);
// },
// setup() {
// return {
// svgContent
// };
// },
// render() {
// return h('div', {
// innerHTML: this.svgContent,
// class: 'svg-icon'
// });
// }
setup() {
return () => h('div', {
innerHTML: svgContent,
});
},
});
componentList.push(SvgComponent);
}
// export const NameList = nameList;
export const ComponentList = componentList;

@ -24,12 +24,11 @@ import {
Space, Space,
Flex, Flex,
Select, Select,
SelectOption,
Textarea, Textarea,
Input, Input,
Radio, Radio,
RadioGroup, RadioGroup,
InputNumber, Affix, InputNumber, Affix
} from 'ant-design-vue'; } from 'ant-design-vue';
import 'ant-design-vue/dist/reset.css'; import 'ant-design-vue/dist/reset.css';
@ -55,7 +54,10 @@ export function setupCustomAntDesignVueComponents(app) {
Space, // ! 间隔 Space, // ! 间隔
Flex, // ! 弹性布局 Flex, // ! 弹性布局
Select, // ! 选择器 Select, // ! 选择器
SelectOption, // ! 选择项 Select.Option,
Select.OptGroup,
// SelectOption, // ! 选择项
// SelectOptGroup, // ! 选项组
Textarea, // ! 多行文本 Textarea, // ! 多行文本
Input, // ! 输入框 Input, // ! 输入框
RadioGroup, // ! 单选组 RadioGroup, // ! 单选组
@ -66,5 +68,7 @@ export function setupCustomAntDesignVueComponents(app) {
for (let component of componentList) { for (let component of componentList) {
app.component(component.name, component); app.component(component.name, component);
} }
app.component('ASelectOption', Select.Option);
app.component('ASelectOptGroup', Select.OptGroup);
setupCustomAntdComponents(app); setupCustomAntdComponents(app);
} }

@ -1,16 +1,17 @@
<script setup name="DictForm"> <script setup name="DictForm">
import { onMounted, h, watch, reactive, ref } from 'vue'; import { onMounted, h, watch, reactive } from 'vue';
import { useBaseDataStore } from '@/stores/baseData.js'; import { useBaseDataStore } from '@/stores/baseData.js';
import { ReloadOutlined, SettingOutlined } from '@ant-design/icons-vue'; import { ReloadOutlined, SettingOutlined } from '@ant-design/icons-vue';
const baseDataStore = useBaseDataStore(); const baseDataStore = useBaseDataStore();
//
const props = defineProps({ const props = defineProps({
status: { data: {
type: Boolean,
},
form: {
type: Object, type: Object,
required: true,
default: () => ({ default: () => ({
status: true,
form: {
pid: 0, pid: 0,
// //
dictKey: '', dictKey: '',
@ -28,30 +29,17 @@ const props = defineProps({
root: false, root: false,
// //
orderNum: 0, orderNum: 0,
}),
},
//
handleAck: {
type: Function,
default: (data) => {
return data;
},
}, },
handleAck: (data) => data,
// //
handleCancel: { handleCancel: (data) => data,
type: Function, }),
default: (data) => {
return data;
},
}, },
}); });
// ! Form // ! Form
const form = reactive({ const form = reactive({
...props.form, ...props.data.form,
}); });
// ! ref
const bodyRef = ref(null);
const offsetBottom = ref(null);
// ! pid // ! pid
watch(form, (newVal, oldVal) => { watch(form, (newVal, oldVal) => {
if (form.pid != '') { if (form.pid != '') {
@ -63,9 +51,10 @@ watch(form, (newVal, oldVal) => {
} }
} }
}); });
//
onMounted(() => { onMounted(() => {
window.pino.info('DictForm Mounted'); window.pino.info('DictForm Mounted');
offsetBottom.value = 0;
// ! // !
if (baseDataStore.state.dictList?.length == 0) { if (baseDataStore.state.dictList?.length == 0) {
baseDataStore.getDictList(); baseDataStore.getDictList();
@ -74,15 +63,17 @@ onMounted(() => {
if (baseDataStore.state.serviceList?.length == 0) { if (baseDataStore.state.serviceList?.length == 0) {
baseDataStore.getServiceList(); baseDataStore.getServiceList();
} }
console.log(props);
}); });
function change(affixed) { function handleChange(da){
console.log(affixed); console.log(da);
}
const handleAck = () => {
props.data.handleAck(form)
} }
</script> </script>
<template> <template>
<div ref="bodyRef" v-if="props.status"> <AntdModalTemplate>
<AForm :model="form" name="DictForm" :label-col="{ span: 8 }" layout="vertical"> <AForm :model="form" name="DictForm" :label-col="{ span: 8 }" layout="vertical">
<AFormItem label="上级字典" name="pid"> <AFormItem label="上级字典" name="pid">
<AFlex gap="small"> <AFlex gap="small">
@ -90,6 +81,7 @@ function change(affixed) {
<AButton flex="0" :icon="h(ReloadOutlined)" @click="baseDataStore.getDictList()" shape="circle" /> <AButton flex="0" :icon="h(ReloadOutlined)" @click="baseDataStore.getDictList()" shape="circle" />
</AFlex> </AFlex>
</AFormItem> </AFormItem>
<AFormItem label="所属服务" name="serviceKey"> <AFormItem label="所属服务" name="serviceKey">
<AFlex gap="small"> <AFlex gap="small">
<ASelect <ASelect
@ -112,7 +104,8 @@ function change(affixed) {
</AFormItem> </AFormItem>
<AFormItem label="字典图标" name="dictIcon"> <AFormItem label="字典图标" name="dictIcon">
<ASelect placeholder="请选择字典图标" ref="dictIcon" v-model:value="form.dictIcon" :options="baseDataStore.state.dictTypeList" /> <IconSelect v-model:value="form.dictIcon" @change="handleChange"/>
<!-- <ASelect placeholder="请选择字典图标" ref="dictIcon" v-model:value="form.dictIcon" :options="baseDataStore.state.dictTypeList" />-->
</AFormItem> </AFormItem>
<AFormItem label="字典描述" name="dictDesc"> <AFormItem label="字典描述" name="dictDesc">
@ -130,10 +123,11 @@ function change(affixed) {
</AInputNumber> </AInputNumber>
</AFormItem> </AFormItem>
</AForm> </AForm>
<AAffix :target="() => bodyRef" :offset-bottom="0"> <template #footer>
<AckCreateAntdButton @click="props.handleAck" /> <AButton type="dashed">取消</AButton>
</AAffix> <AckCreateAntdButton @click="handleAck" />
</div> </template>
</AntdModalTemplate>
</template> </template>
<style scoped></style> <style scoped></style>

@ -1,9 +1,10 @@
<script setup name="DictPage"> <script setup name="DictPage">
import { reactive } from 'vue'; import { reactive } from 'vue';
import DictForm from './DictForm.vue'; import DictForm from './DictForm.vue';
import {IconComponentList1, A, B, C} from '@/components/AntDesignVue/Icon/customIcon.js';
// ! // !
const form = reactive({ const formData = reactive({
// //
status: false, status: false,
// //
@ -27,23 +28,31 @@ const form = reactive({
orderNum: 0, orderNum: 0,
}, },
// //
handleAck: () => { handleAck: (data) => {
console.log(data);
console.log('确认'); console.log('确认');
}, },
// //
handleCancel: () => {}, handleCancel: () => {},
}); });
// const cc = SvgComponentList[0]
</script> </script>
<template> <template>
<WorkContainer> <WorkContainer>
<template #header> <template #header>
<CreateAntdButton name="字典" @click="form.status = true"/> <CreateAntdButton name="字典" @click="formData.status = true" />
</template>
<template #main>
<component :is="A"/>
<component :is="B" style="font-size: 40px; color: #ed5565"/>
<component :is="C" style="font-size: 40px; color: 'hotpink'"/>
<component :is="IconComponentList1[5]"/>
</template> </template>
<template #modal> <template #modal>
<AModal v-model:open="form.status" title="添加字典" :centered="true" :maskClosable="false"> <AModal v-model:open="formData.status" title="添加字典" :centered="true" :maskClosable="false">
<DictForm v-if="form.status" :form="form.formData" :handleAck="form.handleAck" :handleCancel="form.handleCancel" :status:="form.status"></DictForm> <DictForm v-if="formData.status" :data="formData"></DictForm>
<template #footer></template> <template #footer></template>
</AModal> </AModal>
</template> </template>

@ -0,0 +1,18 @@
<template>
<icon :style="{ fontSize: '32px' }">
<template #component="svgProps">
<svg viewBox="0 0 1024 1024" width="1em" height="1em" fill="currentColor" v-bind="svgProps">
<path
d="M99.096 315.634s-82.58-64"
fill="#6B676E"
p-id="1143"
/>
</svg>
</template>
</icon>
</template>
<script lang="ts" setup>
import Icon from '@ant-design/icons-vue';
</script>
<style scoped>
</style>
Loading…
Cancel
Save