diff --git a/simple-mind-map/package.json b/simple-mind-map/package.json
index 898108ba..dfdac432 100644
--- a/simple-mind-map/package.json
+++ b/simple-mind-map/package.json
@@ -13,6 +13,7 @@
}
],
"types": "./types/index.d.ts",
+ "typings": "./types/index.d.ts",
"license": "MIT",
"repository": {
"type": "git",
diff --git a/simple-mind-map/src/svg/icons.js b/simple-mind-map/src/svg/icons.js
index c08ab61b..2747f6f8 100644
--- a/simple-mind-map/src/svg/icons.js
+++ b/simple-mind-map/src/svg/icons.js
@@ -1,3 +1,5 @@
+import { mergerIconListBy } from '../utils'
+
// 超链接图标
const hyperlink =
''
@@ -281,12 +283,23 @@ export const nodeIconList = [
// 获取nodeIconList icon内容
const getNodeIconListIcon = (name, extendIconList = []) => {
let arr = name.split('_')
- let typeData = [...nodeIconList, ...extendIconList].find(item => {
+ const iconList = mergerIconListBy(
+ [...nodeIconList, ...extendIconList],
+ 'type',
+ 'name'
+ )
+
+ let typeData = iconList.find(item => {
return item.type === arr[0]
})
- return typeData.list.find(item => {
- return item.name === arr[1]
- }).icon
+
+ if (typeData) {
+ return typeData.list.find(item => {
+ return item.name === arr[1]
+ }).icon
+ } else {
+ return ''
+ }
}
export default {
diff --git a/simple-mind-map/src/utils/index.js b/simple-mind-map/src/utils/index.js
index babbdb0e..784839f9 100644
--- a/simple-mind-map/src/utils/index.js
+++ b/simple-mind-map/src/utils/index.js
@@ -669,3 +669,39 @@ export const checkIsNodeStyleDataKey = key => {
}
return false
}
+
+// 合并数组对象by某个key
+
+// const data = [
+// { type: 'a', list: [{ name: 1, value: 1 }, { name: 2, value: 2 }] },
+// { type: 'b', list: [{ name: 13, value: 3 }] },
+// { type: 'a', list: [{ name: 1, value: 3 }, { name: 4, value: 4 }] },
+// ];
+
+// mergeObjArrayBy(data, 'type', 'name') 结果
+
+// [
+// { type: 'a', list: [ { name: 1, value: 3 }, { name: 2, value: 2 }, { name: 4, value: 4 } ] },
+// { type: 'b', list: [ { name: 13, value: 3 } ] }
+// ]
+
+export const mergerIconListBy = (arrList, key, name) => {
+ return arrList.reduce((result, item) => {
+ const existingItem = result.find(x => x[key] === item[key])
+ if (existingItem) {
+ item.list.forEach(newObj => {
+ const existingObj = existingItem.list.find(
+ x => x[name] === newObj[name]
+ )
+ if (existingObj) {
+ existingObj.icon = newObj.icon
+ } else {
+ existingItem.list.push(newObj)
+ }
+ })
+ } else {
+ result.push({ ...item })
+ }
+ return result
+ }, [])
+}
diff --git a/web/src/pages/Edit/components/Edit.vue b/web/src/pages/Edit/components/Edit.vue
index d0044080..aebcec38 100644
--- a/web/src/pages/Edit/components/Edit.vue
+++ b/web/src/pages/Edit/components/Edit.vue
@@ -292,7 +292,16 @@ export default {
}
},
...(config || {}),
- iconList: icon,
+ iconList: [...icon, {
+ name: '优先级图标',
+ type: 'priority',
+ list: [
+ {
+ name: '0',
+ icon: ``
+ },
+ ]
+ }],
useLeftKeySelectionRightKeyDrag: this.useLeftKeySelectionRightKeyDrag,
customInnerElsAppendTo: null,
enableAutoEnterTextEditWhenKeydown: true,