@zhangqingcq/vgce 0.1.4 → 0.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zhangqingcq/vgce",
3
- "version": "0.1.4",
3
+ "version": "0.1.5",
4
4
  "description": "Vector graphics configure editor. svg组态编辑器。基于vue3.3+ts+element-plus+vite",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -1,5 +1,6 @@
1
1
  <!--左侧工具栏-->
2
2
  <script lang="ts" setup>
3
+ import { isEmpty } from 'lodash-es'
3
4
  import { ElCollapse, ElCollapseItem, ElIcon, ElMessage } from 'element-plus'
4
5
  import type { IConfig, IConfigItem } from '@/config/types'
5
6
  import { pinia } from '@/hooks'
@@ -23,7 +24,16 @@
23
24
  'echarts'
24
25
  ])
25
26
  const createBegin = (svg_item: IConfigItem) => {
26
- globalStore.setCreateInfo(svg_item)
27
+ globalStore.setCreateInfo(sortProps(svg_item))
28
+ }
29
+
30
+ const sortProps = (svg_item: IConfigItem): IConfigItem => {
31
+ if (svg_item?.props && !isEmpty(svg_item.props)) {
32
+ Object.keys(svg_item.props).forEach((k, i) => {
33
+ svg_item.props[k].sort = String(i)
34
+ })
35
+ }
36
+ return svg_item
27
37
  }
28
38
  const dragEndEvent = (e: DragEvent) => {
29
39
  //拖动时记录拖动的svg信息
@@ -21,6 +21,38 @@
21
21
  code: false
22
22
  })
23
23
 
24
+ const _objInfo = computed(() => {
25
+ const keys: Record<string, any> = {}
26
+ let l = 0
27
+ let t = []
28
+ for (let k of Object.keys(props.objInfo)) {
29
+ const s = props.objInfo[k]?.sort
30
+ if (s) {
31
+ const _s = Number(s)
32
+ if (_s > l) {
33
+ l = _s
34
+ }
35
+ }
36
+ if (s) {
37
+ keys[s] = k
38
+ } else {
39
+ return Object.keys(props.objInfo).map((k) => ({
40
+ ...props.objInfo[k],
41
+ _key: k
42
+ }))
43
+ }
44
+ }
45
+
46
+ for (let i = 0; i < l + 1; i++) {
47
+ const _i = String(i)
48
+ t.push({
49
+ ...props.objInfo[keys[_i]],
50
+ _key: keys[_i]
51
+ })
52
+ }
53
+ return t
54
+ })
55
+
24
56
  function propsChangeHandle(e: any) {
25
57
  let t: any = window.setTimeout(function () {
26
58
  emit('change', e)
@@ -31,19 +63,19 @@
31
63
  </script>
32
64
 
33
65
  <template>
34
- <div v-for="(attr_item, key) in props.objInfo" :key="key">
66
+ <div v-for="attr_item in _objInfo" :key="attr_item._key">
35
67
  <!--表单项上显示的灰色值-->
36
68
  <el-form-item v-if="props.code" class="props-row" size="small">
37
69
  <template #label>
38
70
  <el-tooltip
39
- :content="String(key)"
40
- v-if="getStringWidth(String(key)) > 78"
71
+ :content="String(attr_item._key)"
72
+ v-if="getStringWidth(String(attr_item._key)) > 78"
41
73
  placement="left"
42
74
  popper-class="props-popper"
43
75
  >
44
- <div class="one-row-txt" style="width: 78px">{{ key }}</div>
76
+ <div class="one-row-txt" style="width: 78px">{{ attr_item._key }}</div>
45
77
  </el-tooltip>
46
- <span v-else>{{ key }}</span>
78
+ <span v-else>{{ attr_item._key }}</span>
47
79
  </template>
48
80
  <el-tooltip
49
81
  :content="JSON.stringify(attr_item.val)"
@@ -56,10 +88,10 @@
56
88
  <span v-else>{{ attr_item.val }}</span>
57
89
  </el-form-item>
58
90
  <!--props-->
59
- <el-form-item :label="attr_item.title" size="small" v-if="props.hide.indexOf(String(key)) < 0">
91
+ <el-form-item :label="attr_item.title" size="small" v-if="props.hide.indexOf(String(attr_item._key)) < 0">
60
92
  <el-select
61
93
  v-if="attr_item.type === EConfigItemPropsType.Select"
62
- v-model="attr_item.val"
94
+ v-model="props.objInfo[attr_item._key].val"
63
95
  placeholder="Select"
64
96
  size="small"
65
97
  :disabled="Boolean(attr_item?.disabled)"
@@ -69,19 +101,19 @@
69
101
  </el-select>
70
102
  <el-input-number
71
103
  v-else-if="attr_item.type === EConfigItemPropsType.InputNumber"
72
- v-model="attr_item.val"
104
+ v-model="props.objInfo[attr_item._key].val"
73
105
  :disabled="Boolean(attr_item?.disabled)"
74
106
  @change="propsChangeHandle"
75
107
  />
76
108
  <el-input
77
109
  v-else-if="attr_item.type === EConfigItemPropsType.Input"
78
- v-model="attr_item.val"
110
+ v-model="props.objInfo[attr_item._key].val"
79
111
  :disabled="Boolean(attr_item?.disabled)"
80
112
  @change="propsChangeHandle"
81
113
  />
82
114
  <el-input
83
115
  v-else-if="attr_item.type === EConfigItemPropsType.Textarea"
84
- v-model="attr_item.val"
116
+ v-model="props.objInfo[attr_item._key].val"
85
117
  autosize
86
118
  type="textarea"
87
119
  :disabled="Boolean(attr_item?.disabled)"
@@ -89,19 +121,19 @@
89
121
  />
90
122
  <el-color-picker
91
123
  v-else-if="attr_item.type === EConfigItemPropsType.Color"
92
- v-model="attr_item.val"
124
+ v-model="props.objInfo[attr_item._key].val"
93
125
  :disabled="Boolean(attr_item?.disabled)"
94
126
  @change="propsChangeHandle"
95
127
  />
96
128
  <el-switch
97
129
  v-else-if="attr_item.type === EConfigItemPropsType.Switch"
98
- v-model="attr_item.val"
130
+ v-model="props.objInfo[attr_item._key].val"
99
131
  :disabled="Boolean(attr_item?.disabled)"
100
132
  @change="propsChangeHandle"
101
133
  />
102
134
  <code-edit-modal
103
135
  v-else-if="attr_item.type === EConfigItemPropsType.JsonEdit"
104
- v-model="attr_item.val"
136
+ v-model="props.objInfo[attr_item._key].val"
105
137
  :disabled="Boolean(attr_item?.disabled)"
106
138
  @close="propsChangeHandle"
107
139
  />
@@ -119,8 +151,4 @@
119
151
  .props-popper {
120
152
  max-width: 350px;
121
153
  }
122
- sdf {
123
- color: rgb(245, 247, 250);
124
- background-color: rgb(92, 184, 122);
125
- }
126
154
  </style>
@@ -36,6 +36,7 @@ export interface IConfigItemProps {
36
36
  val: any
37
37
  options?: any
38
38
  disabled?: boolean
39
+ sort?: string
39
40
  }
40
41
  }
41
42