boke-devops 0.0.30 → 0.0.38

Sign up to get free protection for your applications and to get access to all the features.
Files changed (46) hide show
  1. package/package.json +14 -11
  2. package/packages/boke-devops-vue/package-lock.json +15276 -3531
  3. package/packages/boke-devops-vue/package.json +60 -58
  4. package/packages/boke-devops-vue/src/Provider/Provider.vue +6 -0
  5. package/packages/boke-devops-vue/src/Provider/store.ts +7 -2
  6. package/packages/boke-devops-vue/src/{AegisUser → UserAvatar}/__tests__/__snapshots__/Avatar.test.js.snap +63 -60
  7. package/packages/boke-devops-vue/src/{AegisUser/store.ts → UserAvatar/avatar.store.ts} +10 -1
  8. package/packages/boke-devops-vue/src/UserAvatar/user-avatar-card.vue +188 -0
  9. package/packages/boke-devops-vue/src/{AegisUser → UserAvatar}/user-avatar-group.vue +2 -2
  10. package/packages/boke-devops-vue/src/{AegisUser → UserAvatar}/user-avatar.vue +79 -68
  11. package/packages/boke-devops-vue/src/{AegisUser → UserSelect}/multiple-user-select.vue +13 -22
  12. package/packages/boke-devops-vue/src/index.ts +22 -22
  13. package/packages/boke-devops-vue/src/utils/encode.ts +132 -0
  14. package/packages/boke-devops-vue/types/Provider/store.d.ts +4 -0
  15. package/packages/boke-devops-vue/types/UserAvatar/avatar.store.d.ts +9 -0
  16. package/packages/boke-devops-vue/types/UserAvatar/encode.d.ts +1 -0
  17. package/packages/boke-devops-vue/types/UserAvatar/user-avatar-card.vue.d.ts +24 -0
  18. package/packages/boke-devops-vue/types/UserAvatar/user-avatar-group.vue.d.ts +44 -0
  19. package/packages/boke-devops-vue/types/UserAvatar/user-avatar.vue.d.ts +207 -0
  20. package/packages/boke-devops-vue/types/UserSelect/multiple-user-select.vue.d.ts +106 -0
  21. package/packages/boke-devops-vue/types/index.d.ts +10 -8
  22. package/packages/boke-devops-vue/vite.config.ts +29 -29
  23. package/packages/boke-docs/.dumirc.ts +3 -2
  24. package/packages/boke-docs/docs/components/Avatar/__test__/__snapshots__/user_avatar.test.js.snap +255 -0
  25. package/packages/boke-docs/docs/components/Avatar/__test__/user_avatar.test.js +18 -0
  26. package/packages/boke-docs/docs/components/Avatar/demo/normal.vue +1 -0
  27. package/packages/boke-docs/docs/components/Avatar/index.md +18 -0
  28. package/packages/boke-docs/docs/components/AvatarGroup/__test__/__snapshots__/user_avatar.test.js.snap +174 -0
  29. package/packages/boke-docs/docs/components/AvatarGroup/__test__/user_avatar.test.js +18 -0
  30. package/packages/boke-docs/docs/components/AvatarGroup/demo/normal.vue +36 -0
  31. package/packages/boke-docs/docs/components/AvatarGroup/demo/with_provider.vue +59 -0
  32. package/packages/boke-docs/docs/components/AvatarGroup/index.md +28 -0
  33. package/packages/boke-docs/docs/components/UserSelect/__test__/__snapshots__/user_select.test.js.snap +347 -0
  34. package/packages/boke-docs/docs/components/UserSelect/__test__/user_select.test.js +18 -0
  35. package/packages/boke-docs/docs/components/UserSelect/demo/normal.vue +14 -0
  36. package/packages/boke-docs/docs/components/UserSelect/index.md +29 -2
  37. package/packages/boke-docs/node_modules/.cache/logger/umi.log +14 -0
  38. package/packages/boke-docs/package.json +1 -1
  39. package/packages/boke-docs/public/logo.png +0 -0
  40. package/packages/boke-js-bridge/package.json +2 -2
  41. package/test-setup-env.js +52 -0
  42. package/vitest.config.js +6 -1
  43. package/packages/boke-devops-vue/demo/App.vue +0 -62
  44. package/packages/boke-devops-vue/demo/main.ts +0 -7
  45. /package/packages/boke-devops-vue/src/{AegisUser → UserAvatar}/__tests__/Avatar.test.js +0 -0
  46. /package/packages/boke-devops-vue/src/{style/variables.less → utils/style.global.less} +0 -0
@@ -1,59 +1,61 @@
1
- {
2
- "name": "@devops/boke-devops-vue",
3
- "version": "0.0.30",
4
- "description": "BokeDevopsUI",
5
- "main": "dist/index.es.js",
6
- "types": "./dist/index.d.ts",
7
- "scripts": {
8
- "start": "vite --host",
9
- "dev": "npm start ",
10
- "build:tsc": "vue-tsc --emitDeclarationOnly -d",
11
- "build": "pnpm run build:tsc && vite build",
12
- "lint": "eslint 'src/**/*.{js,ts,tsx,jsx}' 'examples/**/*.{js,ts,tsx,jsx}' --fix"
13
- },
14
- "files": [
15
- "dist",
16
- "types"
17
- ],
18
- "dependencies": {
19
- "@ant-design/icons-vue": "^7.0.1",
20
- "ant-design-vue": "^4.2.1",
21
- "protobufjs": "^7.3.0"
22
- },
23
- "peerDependencies": {
24
- "vue": ">=3.2.0"
25
- },
26
- "devDependencies": {
27
- "@types/lodash": "^4.14.182",
28
- "@types/lodash-es": "^4.17.12",
29
- "@types/node": "^16.4.13",
30
- "@types/qs": "^6.9.7",
31
- "@vitejs/plugin-vue": "^2.3.1",
32
- "@vitejs/plugin-vue-jsx": "^1.1.7",
33
- "@vue/compiler-sfc": "^3.0.5",
34
- "@vue/eslint-config-typescript": "^11.0.0",
35
- "@web/test-runner": "^0.13.15",
36
- "husky": "^7.0.4",
37
- "less": "^4.1.1",
38
- "lint-staged": "^12.1.2",
39
- "lodash": "^4.17.21",
40
- "lodash-es": "^4.17.21",
41
- "prettier": "^2.4.1",
42
- "rollup-plugin-visualizer": "^5.9.0",
43
- "sass": "^1.37.5",
44
- "stylelint": "~13.13.1",
45
- "stylelint-config-prettier": "~9.0.3",
46
- "stylelint-less": "1.0.1",
47
- "stylelint-order": "~4.1.0",
48
- "typescript": "^4.3.5",
49
- "vite": "^2.7.1",
50
- "vite-plugin-dts": "^3.6.0",
51
- "vue-tsc": "^1.0.8"
52
- },
53
- "license": "MIT",
54
- "keywords": [],
55
- "authors": [
56
- "Julone"
57
- ],
58
- "gitHead": "35743a6fa655ec881297d4c5a2d023c1fe63b58b"
1
+ {
2
+ "name": "@devops/boke-devops-vue",
3
+ "version": "0.0.38",
4
+ "description": "BokeDevopsUI",
5
+ "author": "Julone",
6
+ "main": "dist/index.es.js",
7
+ "types": "./dist/index.d.ts",
8
+ "scripts": {
9
+ "start": "vite --host",
10
+ "dev": "npm start",
11
+ "build:tsc": "vue-tsc --emitDeclarationOnly -d",
12
+ "build": "pnpm run build:tsc && vite build",
13
+ "lint": "eslint 'src/**/*.{js,ts,tsx,jsx}' 'examples/**/*.{js,ts,tsx,jsx}' --fix"
14
+ },
15
+ "files": [
16
+ "dist",
17
+ "types"
18
+ ],
19
+ "dependencies": {
20
+ "@ant-design/icons-vue": "^7.0.1",
21
+ "@devops/boke-devops-vue": "file:",
22
+ "ant-design-vue": "^4.2.1",
23
+ "protobufjs": "^7.3.0"
24
+ },
25
+ "peerDependencies": {
26
+ "vue": ">=3.2.0"
27
+ },
28
+ "devDependencies": {
29
+ "@types/lodash": "^4.14.182",
30
+ "@types/lodash-es": "^4.17.12",
31
+ "@types/node": "^16.4.13",
32
+ "@types/qs": "^6.9.7",
33
+ "@vitejs/plugin-vue": "^2.3.1",
34
+ "@vitejs/plugin-vue-jsx": "^1.1.7",
35
+ "@vue/compiler-sfc": "^3.0.5",
36
+ "@vue/eslint-config-typescript": "^11.0.0",
37
+ "@web/test-runner": "^0.13.15",
38
+ "husky": "^7.0.4",
39
+ "less": "^4.1.1",
40
+ "lint-staged": "^12.1.2",
41
+ "lodash": "^4.17.21",
42
+ "lodash-es": "^4.17.21",
43
+ "prettier": "^2.4.1",
44
+ "rollup-plugin-visualizer": "^5.9.0",
45
+ "sass": "^1.37.5",
46
+ "stylelint": "~13.13.1",
47
+ "stylelint-config-prettier": "~9.0.3",
48
+ "stylelint-less": "1.0.1",
49
+ "stylelint-order": "~4.1.0",
50
+ "typescript": "^4.3.5",
51
+ "vite": "^2.7.1",
52
+ "vite-plugin-dts": "^3.6.0",
53
+ "vue-tsc": "^1.0.8"
54
+ },
55
+ "license": "MIT",
56
+ "keywords": [],
57
+ "authors": [
58
+ "Julone"
59
+ ],
60
+ "gitHead": "35743a6fa655ec881297d4c5a2d023c1fe63b58b"
59
61
  }
@@ -19,4 +19,10 @@ const props = defineProps({
19
19
  const {gc, gs} = mergeConfig(props)
20
20
  provide("globalConfig", gc)
21
21
  provide("globalState", gs)
22
+
23
+ console.log(
24
+ ` %c ${'@devops/boke-devops-vue'} %c 由 BOKE运维部 构建 `,
25
+ 'color: #fff; background: #ea3c37; padding:5px 0;',
26
+ 'background: #333; color: #fff; padding:5px 0;',
27
+ );
22
28
  </script>
@@ -1,21 +1,26 @@
1
1
  import {reactive} from "vue"
2
2
  import {mergeWith} from "lodash-es"
3
3
 
4
+ // 属性生效规则: 组件Props > 全局Provider的Props > 默认Props
4
5
  export const globalConfig = {
5
6
  avatar: {
6
7
  user_name: "name",
7
8
  dept_name: "dept_name",
8
9
  user_avatar: "avatar",
9
- user_id: "user_id"
10
+ user_id: "user_id" // cmdb中的user_id
11
+ },
12
+ avatarCard: {
13
+ "api_url": process.env.NODE_ENV == 'development'? "https://devopstest.pocketcity.com/api": "//devops.pocketcity.com/api",
14
+ "enabled": true,
10
15
  }
11
16
  }
12
17
 
13
-
14
18
  export const globalState = reactive({
15
19
  global_always_avatar_is_hihglight: null, //如果设置这个, 自带的头像高亮将失效
16
20
  })
17
21
 
18
22
  export const mergeConfig = (props: any) => {
23
+
19
24
  return {
20
25
  gc: mergeWith({}, globalConfig, props.globalConfig),
21
26
  gs: mergeWith({}, globalState, props.globalState), // TIP: 为什么需要合并到{}, 因为要避免污染全局的属性
@@ -1,60 +1,63 @@
1
- // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
2
-
3
- exports[`Link changes the state when hovered 1`] = `
4
- <div
5
- data-v-6fc62be8=""
6
- style="display: inline-flex;"
7
- >
8
- <span
9
- class="ant-tag css-dev-only-do-not-override-16pw25h ant-tag-default boke-useravator-wrapper"
10
- data-v-6fc62be8=""
11
- style="padding: 2px 12px 2px 2px; border-radius: 50px;"
12
- >
13
-
14
- <div
15
- class="left-icon"
16
- data-v-6fc62be8=""
17
- >
18
- <span
19
- class="avator-icon ant-avatar ant-avatar-circle ant-avatar-image css-dev-only-do-not-override-16pw25h"
20
- data-v-6fc62be8=""
21
- style="width: 28px; height: 28px; line-height: 28px; font-size: 18px;"
22
- >
23
- <img
24
- src="https://s1-imfile.fewebp"
25
- />
26
- </span>
27
- </div>
28
-
29
-
30
- <div
31
- class="label"
32
- data-v-6fc62be8=""
33
- >
34
- <span
35
- class="realname"
36
- data-v-6fc62be8=""
37
- >
38
- Julone
39
- </span>
40
- <span
41
- class="id"
42
- data-v-6fc62be8=""
43
- >
44
- <span
45
- data-v-6fc62be8=""
46
- >
47
- 运维部
48
- </span>
49
- </span>
50
- </div>
51
- <!--v-if-->
52
- <!--v-if-->
53
-
54
- sdafasd
55
-
56
-
57
- <!---->
58
- </span>
59
- </div>
60
- `;
1
+ // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
2
+
3
+ exports[`Link changes the state when hovered 1`] = `
4
+ <div
5
+ data-v-7871c292=""
6
+ style="display: inline-flex;"
7
+ >
8
+ <span
9
+ class="ant-tag css-dev-only-do-not-override-16pw25h ant-tag-default boke-useravator-wrapper"
10
+ data-v-7871c292=""
11
+ style="padding: 2px 12px 2px 2px; border-radius: 50px;"
12
+ >
13
+
14
+ <div
15
+ class="left-icon"
16
+ data-v-7871c292=""
17
+ >
18
+
19
+ <span
20
+ class="avator-icon ant-avatar ant-avatar-circle ant-avatar-image css-dev-only-do-not-override-16pw25h"
21
+ data-v-7871c292=""
22
+ style="width: 28px; height: 28px; line-height: 28px; font-size: 18px;"
23
+ >
24
+ <img
25
+ src="https://s1-imfile.fewebp"
26
+ />
27
+ </span>
28
+ <!---->
29
+
30
+ </div>
31
+
32
+
33
+ <div
34
+ class="label"
35
+ data-v-7871c292=""
36
+ >
37
+ <span
38
+ class="realname"
39
+ data-v-7871c292=""
40
+ >
41
+ Julone
42
+ </span>
43
+ <span
44
+ class="id"
45
+ data-v-7871c292=""
46
+ >
47
+ <span
48
+ data-v-7871c292=""
49
+ >
50
+ 运维部
51
+ </span>
52
+ </span>
53
+ </div>
54
+ <!--v-if-->
55
+ <!--v-if-->
56
+
57
+ sdafasd
58
+
59
+
60
+ <!---->
61
+ </span>
62
+ </div>
63
+ `;
@@ -7,17 +7,26 @@ export const useCustomProps = () => {
7
7
  const injectGlobalConfig = inject("globalConfig") as any
8
8
  const injectGlobalState = inject("globalState") as any
9
9
  const mergedProps = mergeWith({}, globalConfig.avatar, injectGlobalConfig?.avatar, props?.customProps || {});
10
+ const mergedAvatarCardProps = mergeWith({}, globalConfig.avatarCard, injectGlobalConfig?.avatarCard);
11
+
10
12
 
11
13
  let NAME_KEY = toRef(mergedProps, 'user_name')
12
14
  let AVATAR_KEY = toRef(mergedProps, 'user_avatar')
13
15
  let DEPT_KEY = toRef(mergedProps, 'dept_name')
14
16
  let USERID_KEY = toRef(mergedProps, 'user_id')
17
+
18
+
15
19
  const global_always_avatar_is_hihglight = injectGlobalState?.global_always_avatar_is_hihglight || globalState?.global_always_avatar_is_hihglight
20
+ const global_disabled_avatar_card = injectGlobalConfig?.avatarCard?.enabled == false
21
+ const AVATAR_CARD_URL = mergedAvatarCardProps.api_url
22
+
16
23
  return {
17
24
  NAME_KEY,
18
25
  AVATAR_KEY,
19
26
  DEPT_KEY,
20
27
  USERID_KEY,
21
- global_always_avatar_is_hihglight
28
+ global_always_avatar_is_hihglight,
29
+ global_disabled_avatar_card,
30
+ AVATAR_CARD_URL
22
31
  }
23
32
  }
@@ -0,0 +1,188 @@
1
+ <template>
2
+ <div
3
+ class="mps-user-avator-rich-conent"
4
+ style="display: flex; gap: 16px; flex-direction: row; align-items: flex-start;"
5
+ >
6
+ <div style="z-index: 2">
7
+ <img :src="userinfo.user_icon" style="width: 70px; height: 70px;border-radius: 500px;margin-top: 10px;" />
8
+ </div>
9
+ <div style="z-index: 2">
10
+ <p
11
+ class="demo-rich-content__name"
12
+ style="margin: 0 0 6px 0; font-weight: 500"
13
+ >
14
+ <a-space :size="12" :spacer="spacer" :wrap="false">
15
+ <span style="font-weight:bold">{{ userinfo.user_name }}</span>
16
+ <span class="dept_class">{{ userinfo.dept_name }}</span>
17
+ <span class="dept_class" v-if="userinfo.dept_name != extraInfo?.min_fs_department_name && extraInfo?.min_fs_department_name">{{ extraInfo?.min_fs_department_name }}</span>
18
+ </a-space>
19
+ </p>
20
+ <p
21
+ v-if="extraInfo"
22
+ class="demo-rich-content__mention"
23
+ style="
24
+ margin: 0 0 8px 0;
25
+ font-size: 14px;
26
+ color: var(--el-color-info);
27
+ "
28
+ >
29
+ <a-space :wrap="true" :size="2">
30
+ <ATag :bordered="false" color="orange" v-for="el in extraInfogroups" :key="el.name" size="small">
31
+ {{el.name}}
32
+ </ATag>
33
+ <a-button type="link" size="small" @click="seeAllRoles = !seeAllRoles, $emit('pinCard')" style="zoom: 0.8">关联角色({{extraInfogroupsCount}})<CaretDownOutlined :rotate="seeAllRoles?180: 0" /></a-button>
34
+ </a-space>
35
+ </p>
36
+ <p
37
+ v-if="extraInfo"
38
+ class="demo-rich-content__mention"
39
+ style="
40
+ margin: 0 0 6px 0;
41
+ font-size: 14px;
42
+ color: var(--el-color-info);
43
+ "
44
+ >
45
+ <a-space :wrap="true" :size="2">
46
+ <MpsRoleTag v-for="(el,index) in projectslist" :key="el" size="small">
47
+ {{el}}
48
+ </MpsRoleTag>
49
+ <a-button type="link" size="small" @click="seeAllProjects = !seeAllProjects, $emit('pinCard')" style="zoom: 0.8">关联项目({{projectslistCount}})<CaretDownOutlined :rotate="seeAllProjects?180: 0" /></a-button>
50
+ </a-space>
51
+ </p>
52
+ <p class="demo-rich-content__desc" style="margin: 8px 0 0">
53
+ <a-space :size="2" :spacer="spacer">
54
+ <a-button
55
+ type="primary"
56
+ size="small"
57
+ :disabled="!extraInfo"
58
+ @click="onChat(extraInfo?.fs_open_id)"
59
+ >
60
+ 飞书联系
61
+ </a-button>
62
+ </a-space>
63
+ </p>
64
+ <a style="position:absolute; right: 8px; bottom: 8px;float:right; font-size: 12px; opacity: 0.8; color: #ccc; transform: translateY(0px)" href="https://devops.pocketcity.com/">数据来源: Aegis</a>
65
+
66
+ </div>
67
+ <div
68
+ class="mps-user-avator-rich-conent_after"
69
+ :style="{
70
+ 'background-image': `url('https://sf3-scmcdn-cn.feishucdn.com/obj/feishu-static/lark/open/app_store/images/banner-2c2539b4.png')`,
71
+ opacity: 0.4,
72
+ 'background-size': 'cover',
73
+ 'background-position-y': '-30px',
74
+ }"
75
+ ></div>
76
+ </div>
77
+ </template>
78
+ <style lang="scss" scoped>
79
+ .mps-user-avator-rich-conent {
80
+ min-width: 270px;
81
+ max-width: 350px;
82
+ :deep(.el-avatar) {
83
+ img {
84
+ width: 100%;
85
+ cursor: zoom-in;
86
+ }
87
+ }
88
+ :deep(.dept_class){
89
+ color: #333;
90
+ font-size: 12px;
91
+ }
92
+
93
+ .mps-user-avator-rich-conent_after {
94
+ content: '';
95
+ position: absolute;
96
+ right: 0;
97
+ bottom: 0;
98
+ left: 0;
99
+ top: 0px;
100
+ z-index: 1;
101
+ border-radius: 8px;
102
+
103
+ background-repeat: no-repeat;
104
+ background-size: contain;
105
+ background-position: left top;
106
+ }
107
+ }
108
+ </style>
109
+ <script>
110
+ import { defineComponent, createVNode } from 'vue'
111
+ import {Tag as ATag ,Divider as ADivider, Space as ASpace, Button as AButton} from "ant-design-vue"
112
+ import {hex_sha1} from "../utils/encode";
113
+ import {CaretDownOutlined} from "@ant-design/icons-vue"
114
+ import {useCustomProps} from "./avatar.store"
115
+
116
+ export default defineComponent({
117
+ props: ['userinfo'],
118
+ components: { MpsRoleTag: ATag, MpsGroupTag: ATag, MpsDictTag: ATag ,ASpace,AButton,ATag,CaretDownOutlined},
119
+ emit: ['pinCard'],
120
+ data() {
121
+ return {
122
+ showViewer: false,
123
+ spacer: createVNode(ADivider, {
124
+ direction: 'vertical',
125
+ style: { margin: '0 2px' },
126
+ }),
127
+ isDark: false,
128
+ extraInfo: null,
129
+ seeAllProjects: false,
130
+ seeAllRoles: false
131
+ }
132
+ },
133
+ computed: {
134
+ projectslist(){
135
+ return (this.extraInfo?.projects_list || []).filter((item, index) => {
136
+ if(this.seeAllProjects) {
137
+ return true
138
+ }
139
+ return index < 4
140
+ })
141
+ },
142
+ projectslistCount(){
143
+ return (this.extraInfo?.projects_list || [])?.length
144
+ },
145
+ extraInfogroups(){
146
+ return (this.extraInfo?.groups || []).filter((item, index) => {
147
+ if(this.seeAllRoles) {
148
+ return true
149
+ }
150
+ return index < 4
151
+ })
152
+ },
153
+ extraInfogroupsCount(){
154
+ return (this.extraInfo?.groups || []).length
155
+ }
156
+
157
+ },
158
+ methods: {
159
+ onChat(account) {
160
+ window.open(`feishu://applink.feishu.cn/client/chat/open?openId=${account}`)
161
+ },
162
+ },
163
+ mounted() {
164
+ // 预备参数
165
+ const jsapi_ticket = Math.random().toString(36).substr(2, 18)
166
+ const noncestr = Math.random().toString(36).substr(2, 7)
167
+ const user_id = this.userinfo?.user_id
168
+ const timestamp = Date.now()
169
+ // 加密参数生成签名
170
+ const encode = `jsapi_ticket=${jsapi_ticket}&noncestr=${noncestr}&user_id=${user_id}&timestamp=${timestamp}`
171
+ const signature = hex_sha1(encode)
172
+ // 查询
173
+ try {
174
+ const {AVATAR_CARD_URL} = useCustomProps();
175
+ const api = `/users/getUserInfo/?${encode}&signature=${signature}`
176
+ fetch(AVATAR_CARD_URL + api,).then(res=> res.json()).then(res=> {
177
+ if (res.code == 0) {
178
+ this.extraInfo = res.data
179
+ }
180
+ })
181
+ } catch (error) {
182
+
183
+ }
184
+
185
+ },
186
+ })
187
+ </script>
188
+
@@ -3,7 +3,7 @@
3
3
  <rmp-user-avatar v-else-if="data.length == 1" :data="data[0]" :key="data[0]?.[AVATAR_KEY]" :size="size" :hide-popover="false"
4
4
  :show-text="props.showText" :is_highlight="() => props.is_highlight(data[0])" :tag="props.tag"></rmp-user-avatar>
5
5
  <a-popover v-else show-arrow placement="bottom" destroy-on-close>
6
- <div>
6
+ <div style="display: inline-flex;">
7
7
  <a-avatar-group>
8
8
  <template v-for="(el, index) in data">
9
9
  <a-avatar :src="el?.[AVATAR_KEY]" :key="el?.[AVATAR_KEY]" v-if="index < props.max" :size="$props.size" :class="{ is_highlight: isH(el) }"></a-avatar>
@@ -25,7 +25,7 @@
25
25
  import { useAttrs } from "vue"
26
26
  import RmpUserAvatar from './user-avatar.vue';
27
27
  import { Popover as APopover, AvatarGroup as AAvatarGroup, Avatar as AAvatar, TypographyText as ATypographyText} from "ant-design-vue"
28
- import { useCustomProps } from "./store"
28
+ import { useCustomProps } from "./avatar.store"
29
29
  import {isFunction} from "lodash-es"
30
30
 
31
31
  const props = defineProps({