From ed7afec7c6fa2a968c2822b49145fc1922632054 Mon Sep 17 00:00:00 2001 From: haoxr <1490493387@qq.com> Date: Sat, 14 Jan 2023 17:31:28 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E9=87=8D=E6=9E=84=E5=9B=BE=E6=A0=87?= =?UTF-8?q?=E9=80=89=E6=8B=A9=E5=99=A8=E7=BB=84=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Former-commit-id: c47cd1e04c56da514d3649c36a8d15ce890078f4 --- src/assets/icons/qq.svg | 1 - src/assets/icons/wechat.svg | 1 - src/components/IconSelect/index.vue | 95 +++++++++++--- src/layout/components/Navbar.vue | 20 +-- src/layout/components/Sidebar/MixNav.vue | 153 ----------------------- src/views/system/menu/index.vue | 9 +- 6 files changed, 84 insertions(+), 195 deletions(-) delete mode 100644 src/assets/icons/qq.svg delete mode 100644 src/assets/icons/wechat.svg delete mode 100644 src/layout/components/Sidebar/MixNav.vue diff --git a/src/assets/icons/qq.svg b/src/assets/icons/qq.svg deleted file mode 100644 index 98da3953..00000000 --- a/src/assets/icons/qq.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/src/assets/icons/wechat.svg b/src/assets/icons/wechat.svg deleted file mode 100644 index 35de4bc3..00000000 --- a/src/assets/icons/wechat.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/src/components/IconSelect/index.vue b/src/components/IconSelect/index.vue index ea6aed4e..864aa837 100644 --- a/src/components/IconSelect/index.vue +++ b/src/components/IconSelect/index.vue @@ -3,24 +3,57 @@ const props = defineProps({ modelValue: { type: String, require: false + }, + /** + * 选择器宽度 + */ + width: { + type: String, + require: false, + default: '400px' } }); const emit = defineEmits(['update:modelValue']); const visible = ref(false); const inputValue = toRef(props, 'modelValue'); -const iconList = ref([]); +const width = toRef(props, 'width'); +const iconNames: string[] = []; +const filterIconNames = ref([]); const filterValue = ref(''); -const icon = ref('perm'); - function loadIcons() { - const modules = import.meta.glob('../../assets/icons/*.svg'); - for (const path in modules) { - const icon = path.split('assets/icons/')[1].split('.svg')[0]; - iconList.value.push(icon); + const icons = import.meta.glob('../../assets/icons/*.svg'); + for (const icon in icons) { + const iconName = icon.split('assets/icons/')[1].split('.svg')[0]; + iconNames.push(iconName); } + filterIconNames.value = iconNames; +} + +/** + * 筛选图标 + */ +function handleIconFilter() { + console.log('筛选关键字', filterValue.value); + if (filterValue.value) { + filterIconNames.value = filterIconNames.value.filter(iconName => + iconName.includes(filterValue.value) + ); + } else { + filterIconNames.value = iconNames; + } +} + +/** + * 选择图标 + * + * @param iconName 选择的图标名称 + */ +function onIconSelect(iconName: string) { + emit('update:modelValue', iconName); + visible.value = false; } onMounted(() => { @@ -29,9 +62,16 @@ onMounted(() => {