@tplc/business 0.0.41 → 0.0.48

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.
Files changed (37) hide show
  1. package/CHANGELOG.md +59 -0
  2. package/action.d.ts +3 -0
  3. package/components/lcb-action-view/lcb-action-view.vue +19 -4
  4. package/components/lcb-dynamic-data/lcb-dynamic-data.vue +5 -2
  5. package/components/lcb-dynamic-data/types.ts +1 -1
  6. package/components/lcb-list/components/FilterList/index.vue +1 -5
  7. package/components/lcb-list/index.scss +5 -0
  8. package/components/lcb-list/lcb-list.vue +23 -2
  9. package/components/lcb-list/types.ts +1 -1
  10. package/components/lcb-nav/lcb-nav.vue +1 -1
  11. package/components/lcb-product/lcb-product.vue +56 -11
  12. package/components/lcb-product-item/components/ItemValue.vue +77 -65
  13. package/components/lcb-product-item/lcb-product-item.vue +69 -15
  14. package/components/lcb-product-item/types.ts +14 -0
  15. package/components/lcb-user-top/api/index.ts +13 -0
  16. package/components/lcb-user-top/lcb-user-top.vue +40 -47
  17. package/components/lcb-user-top/types.ts +4 -47
  18. package/constants.ts +2 -0
  19. package/hooks/useUpload.api.ts +17 -0
  20. package/hooks/useUpload.ts +111 -0
  21. package/package.json +2 -2
  22. package/types/components/lcb-action-view/lcb-action-view.vue.d.ts +22 -2
  23. package/types/components/lcb-dynamic-data/types.d.ts +1 -1
  24. package/types/components/lcb-list/components/FilterList/index.vue.d.ts +13 -1
  25. package/types/components/lcb-list/lcb-list.vue.d.ts +13 -1
  26. package/types/components/lcb-nav/lcb-nav.vue.d.ts +1 -1
  27. package/types/components/lcb-product/lcb-product.vue.d.ts +35 -1
  28. package/types/components/lcb-product-item/components/ItemValue.vue.d.ts +19 -1
  29. package/types/components/lcb-product-item/lcb-product-item.vue.d.ts +36 -2
  30. package/types/components/lcb-product-item/types.d.ts +13 -0
  31. package/types/components/lcb-user-top/api/index.d.ts +10 -0
  32. package/types/components/lcb-user-top/lcb-user-top.vue.d.ts +3 -0
  33. package/types/components/lcb-user-top/types.d.ts +4 -3
  34. package/types/constants.d.ts +2 -0
  35. package/types/hooks/useUpload.api.d.ts +12 -0
  36. package/types/hooks/useUpload.d.ts +23 -0
  37. package/utils/utils.ts +9 -9
@@ -1,5 +1,19 @@
1
1
  import { CSSProperties } from 'vue'
2
2
 
3
+ export const lcbProductItemContentTypes = [
4
+ 'image',
5
+ 'title',
6
+ 'subTitle',
7
+ 'price',
8
+ 'priceUnit',
9
+ 'priceSuffix',
10
+ 'originPrice',
11
+ 'originPriceUnit',
12
+ 'tags',
13
+ 'location',
14
+ 'distance',
15
+ ] as const
16
+
3
17
  export interface LcbProductItemProps {
4
18
  // Define the component's prop types here
5
19
  className?: string
@@ -0,0 +1,13 @@
1
+ const env = import.meta as unknown as { env: Record<string, string> }
2
+ export const getUserPhone = (data: { encryptedData: string; iv: string; code?: string }) =>
3
+ uni.$lcb.http.post('/wechatProgram/api/getPhone', {
4
+ ...data,
5
+ appId: env.env.VITE_WX_APPID,
6
+ })
7
+
8
+ export const saveUserInfo = (data: { nickName?: string; avatarUrl?: string }) =>
9
+ uni.$lcb.http.post('/wechatProgram/saveUserInfo', data)
10
+
11
+ // /api/login/getUserInfo
12
+
13
+ export const getUserInfo = () => uni.$lcb.http.post('/login/getUserInfo')
@@ -14,7 +14,7 @@
14
14
  />
15
15
  <view class="flex flex-items-center">
16
16
  <wd-img
17
- v-if="!!photoUrl"
17
+ v-if="photoUrl"
18
18
  v-bind="{
19
19
  width: transformValueUnit(photoSize),
20
20
  height: transformValueUnit(photoSize),
@@ -31,21 +31,20 @@
31
31
  borderRadius: photoRound ? '50%' : '',
32
32
  }"
33
33
  class="bg-#eee userPlace mr-40rpx"
34
- >
35
- <!-- flex justify-center items-center overflow-hidden relative -->
36
- <!-- <wd-icon name="user" :size="transformValueUnit(photoSize * 0.9)" color="#ddd" class="absolute photoIcon"></wd-icon> -->
37
- </view>
34
+ />
38
35
  <view class="flex-1">
39
- <view
40
- class="font-bold"
41
- :style="{
42
- fontSize: transformValueUnit(textSize),
43
- color: textColor,
44
- }"
45
- >
46
- 授权登录
47
- </view>
48
- <view class="flex" v-if="editBtn == true">
36
+ <lcb-action-view :jumpType="88" @phone="getPhone">
37
+ <view
38
+ class="font-bold"
39
+ :style="{
40
+ fontSize: transformValueUnit(textSize),
41
+ color: textColor,
42
+ }"
43
+ >
44
+ 授权登录
45
+ </view>
46
+ </lcb-action-view>
47
+ <view class="flex" v-if="editBtn">
49
48
  <view
50
49
  class="flex flex-content-center flex-items-center mt-5px border-style-solid"
51
50
  :style="{
@@ -61,26 +60,27 @@
61
60
  </view>
62
61
  </view>
63
62
  </view>
64
- <div
65
- v-if="moreIcon == true && iconType === 1"
66
- class="overflow-hidden bg-no-repeat bg-contain"
67
- :style="{
68
- height: transformValueUnit(textSize),
69
- width: transformValueUnit(textSize),
70
- color: textColor,
71
- backgroundImage: `url('${iconUpload}')`,
72
- }"
73
- />
74
- <view v-if="moreIcon == true && iconType === 0">
63
+ <!-- 右边按钮 -->
64
+ <lcb-action-view v-if="moreIcon" v-bind="rightIconLink">
65
+ <img
66
+ v-if="iconType === 1"
67
+ :src="iconUpload"
68
+ :style="{
69
+ width: transformValueUnit(rightIconSize),
70
+ color: textColor,
71
+ }"
72
+ mode="widthFix"
73
+ />
75
74
  <wd-icon
76
75
  class-prefix="lcb"
76
+ v-else
77
77
  v-bind="{
78
78
  name: iconName,
79
- size: transformValueUnit(textSize),
79
+ size: transformValueUnit(rightIconSize),
80
80
  color: textColor,
81
81
  }"
82
82
  />
83
- </view>
83
+ </lcb-action-view>
84
84
  </view>
85
85
  <view
86
86
  v-if="valuesCard == true || coupons == true || presales == true || memberPoints == true"
@@ -95,18 +95,6 @@
95
95
  <Nums v-if="coupons == true" v-bind="$props" title="优惠券" />
96
96
  <Nums v-if="presales == true" v-bind="$props" title="预售券" />
97
97
  <Nums v-if="memberPoints == true" v-bind="$props" title="会员积分" />
98
- <!-- <View v-if="coupons == true" class="">
99
- <view class="text-22px font-bold">0</view>
100
- <view class="text-12px optName">优惠券</view>
101
- </View>
102
- <View v-if="presales == true" class="">
103
- <view class="text-22px font-bold">0</view>
104
- <view class="text-12px optName">预售券</view>
105
- </View>
106
- <View v-if="memberPoints == true" class="">
107
- <view class="text-22px font-bold">0</view>
108
- <view class="text-12px optName">会员积分</view>
109
- </View> -->
110
98
  </view>
111
99
  </lcb-block>
112
100
  </template>
@@ -115,9 +103,10 @@
115
103
  import { LcbUserTopProps } from './types'
116
104
  import { transformValueUnit } from '../../utils/transform'
117
105
  import Nums from './Nums/index.vue'
118
- import { styleText } from 'util'
119
- import { computed } from 'vue'
106
+ import { computed, inject } from 'vue'
120
107
  import { addUnit } from '@tplc/wot/components/common/util'
108
+ import { PAGE_PROVIDE_KEY } from '../../constants'
109
+ import { getUserInfo, getUserPhone } from './api'
121
110
  const { statusBarHeight } = uni.getSystemInfoSync()
122
111
  defineOptions({
123
112
  name: 'LcbUserTop',
@@ -127,13 +116,16 @@ defineOptions({
127
116
  styleIsolation: 'shared',
128
117
  },
129
118
  })
119
+ const pageInfo = inject(PAGE_PROVIDE_KEY)
120
+ const photoUrl = ''
121
+ const editBtn = ''
130
122
  withDefaults(defineProps<LcbUserTopProps>(), {
131
123
  photoSize: 100,
132
124
  paddingLeft: 35,
133
125
  paddingRight: 35,
134
126
  paddingTop: 100,
135
127
  paddingBottom: 100,
136
- photoRound: false,
128
+ photoRound: true,
137
129
  textSize: 32,
138
130
  textColor: '#333',
139
131
  moreIcon: true,
@@ -141,17 +133,18 @@ withDefaults(defineProps<LcbUserTopProps>(), {
141
133
  iconName: 'xiayiye',
142
134
  editText: '编辑资料',
143
135
  editSize: 28,
136
+ rightIconSize: 28,
144
137
  bgStyle: 1,
145
138
  })
146
139
  const padTop = computed(() => {
147
140
  return addUnit(statusBarHeight || 0)
148
141
  })
142
+ const getPhone = async (e) => {
143
+ await getUserPhone(e.detail)
144
+ }
145
+ getUserInfo()
149
146
  </script>
150
147
  <style lang="scss" scoped>
151
- // .optName {
152
- // opacity: 0.7;
153
- // }
154
-
155
148
  .userPlace {
156
149
  background-image: url('https://lycs.eluying.com/material/icon/1/20240925185540/userPhoto.jpg');
157
150
  background-size: contain;
@@ -1,52 +1,8 @@
1
- import { ActionView } from 'action'
2
- import { LcbBlockProps } from '.././/lcb-block/types'
1
+ import { LcbActionViewProps } from '../lcb-action-view/types'
2
+ import { LcbBlockProps } from '../lcb-block/types'
3
3
 
4
4
  export interface LcbUserTopProps extends LcbBlockProps {
5
- // // items?: Partial<ActionView>[]
6
- // // imageWidth?: number
7
- // autoplay?: boolean
8
- // /** 滚动方向 默认 horizontal */
9
- // direction?: 'horizontal' | 'vertical'
10
- // /** 同时显示的滑块数量 默认 1 */
11
- // displayMultipleItems?: number
12
- // /** 滑动时长 300ms */
13
- // duration?: number
14
- // /** 轮播图高度 默认192 */
15
- // height?: number
16
- // /** 轮播间隔时间 5000ms */
17
- // interval?: number
18
- // /** 是否循环播放 默认 true */
19
- // loop?: boolean
20
- // /** 后边间距 */
21
- // nextMargin?: number
22
- // /** 前边间距 */
23
- // previousMargin?: number
24
- // /** 指示器位置 bottom */
25
- // indicatorPosition?:
26
- // | 'left'
27
- // | 'top-left'
28
- // | 'top'
29
- // | 'top-right'
30
- // | 'bottom-left'
31
- // | 'bottom'
32
- // | 'bottom-right'
33
- // | 'right'
34
- // /** 边距是否应用到第一个、最后一个元素 */
35
- // snapToEdge?: boolean
36
- // // 图片之间距离
37
- // itemPadding?: number
38
- // /** 图片圆角 */
39
- // imageRadius?: number
40
- // // 整个banner圆角
41
- // radius?: number
42
- // customPrevImageClass?: string
43
- // customNextImageClass?: string
44
- // indicator?: 'dots' | 'dots-bar' | 'fraction'
45
- // /** 滑动样式 1平面 2立体 */
46
- // slidingStyle?: 1 | 2
47
-
48
5
  // paddingRight?: number
49
- photoUrl?: string
50
6
  photoRound?: boolean
51
7
  photoSize?: number
52
8
  textSize?: number
@@ -58,7 +14,6 @@ export interface LcbUserTopProps extends LcbBlockProps {
58
14
  iconName?: string
59
15
  iconUpload?: string
60
16
  iconType?: 0 | 1
61
- editBtn?: boolean
62
17
  editText?: string
63
18
  editBorder?: boolean
64
19
  editSize?: number
@@ -72,6 +27,8 @@ export interface LcbUserTopProps extends LcbBlockProps {
72
27
  titleColor?: string
73
28
  numsMarginTop?: number
74
29
  numsPadLR?: number
30
+ rightIconSize?: number
31
+ rightIconLink?: LcbActionViewProps
75
32
  }
76
33
 
77
34
  export interface NumsItemProps {
package/constants.ts CHANGED
@@ -1 +1,3 @@
1
1
  export const FORM_KEY = 'form'
2
+ /** 页面信息 */
3
+ export const PAGE_PROVIDE_KEY = 'page_provide'
@@ -0,0 +1,17 @@
1
+ interface OssUploadResponse {
2
+ fileUrl: string
3
+ ossType: string
4
+ uploadHeaders: UploadHeaders
5
+ uploadUrl: string
6
+ }
7
+
8
+ interface UploadHeaders {
9
+ Date: string
10
+ }
11
+ /** 商城文件 */
12
+ export const uploadByUrl = async (fileName: string) => {
13
+ const { data } = await uni.$lcb.http.post<OssUploadResponse>('/ossUpload/uploadByUrl', {
14
+ fileName,
15
+ })
16
+ return data
17
+ }
@@ -0,0 +1,111 @@
1
+ import { Ref, ref } from 'vue'
2
+ import { uploadByUrl } from './useUpload.api'
3
+
4
+ /**
5
+ * useUpload 是一个定制化的请求钩子,用于处理上传图片。
6
+ * @param formData 额外传递给后台的数据,如{name: '菲鸽'}。
7
+ * @returns 返回一个对象{loading, data, run},包含请求的加载状态、错误信息、响应数据和手动触发请求的函数。
8
+ */
9
+ export default function useUpload(onSuccess?: (url: string) => void) {
10
+ const data = ref<string>('')
11
+ const run = () => {
12
+ // #ifdef MP-WEIXIN
13
+ uni.chooseMedia({
14
+ count: 1,
15
+ mediaType: ['image'],
16
+ success: (res) => {
17
+ const filePath = res.tempFiles[0].tempFilePath
18
+ const name = filePath.split('/').pop() || ''
19
+ uploadFile({ filePath, data, name, onSuccess })
20
+ },
21
+ fail: (err) => {
22
+ console.error('uni.chooseMedia err->', err)
23
+ },
24
+ })
25
+ // #endif
26
+ // #ifndef MP-WEIXIN
27
+ uni.chooseImage({
28
+ count: 1,
29
+ success: (res) => {
30
+ const name = res.tempFiles[0].name
31
+ const file = res.tempFiles[0]
32
+ uploadFile({ data, name, file, onSuccess })
33
+ },
34
+ fail: (err) => {
35
+ console.error('uni.chooseImage err->', err)
36
+ },
37
+ })
38
+ // #endif
39
+ }
40
+
41
+ return { data, run }
42
+ }
43
+
44
+ export async function uploadFile({
45
+ filePath,
46
+ file,
47
+ data,
48
+ name,
49
+ onSuccess,
50
+ }: {
51
+ filePath?: string
52
+ file?: File
53
+ data?: Ref<string>
54
+ name: string
55
+ onSuccess?: (url: string) => void
56
+ }) {
57
+ const pageRoute = getCurrentPages().at(-1)?.route || ''
58
+ uni.$lcb.loadingStore?.().changeLoading(pageRoute, true)
59
+ const { uploadUrl, ossType, fileUrl } = await uploadByUrl(`${new Date().getTime()}_${name}`)
60
+ const fun = (fileData) => {
61
+ uni.request({
62
+ url: uploadUrl,
63
+ method: 'PUT',
64
+ data: fileData,
65
+ header:
66
+ ossType === 'tyyun'
67
+ ? {
68
+ 'x-amz-acl': 'public-read',
69
+ 'Content-Type': 'image',
70
+ }
71
+ : {
72
+ 'Content-Type': ' ',
73
+ },
74
+ success: () => {
75
+ onSuccess?.(fileUrl)
76
+ if (data) data.value = fileUrl
77
+ uni.$lcb.loadingStore?.().changeLoading(pageRoute, false)
78
+ },
79
+ fail: () => {
80
+ uni.showToast({
81
+ title: '上传失败',
82
+ icon: 'none',
83
+ })
84
+ uni.$lcb.loadingStore?.().changeLoading(pageRoute, false)
85
+ },
86
+ })
87
+ }
88
+ // #ifdef H5
89
+ fun(file)
90
+ // #endif
91
+
92
+ // #ifndef H5
93
+ if (filePath) {
94
+ const fs = uni.getFileSystemManager()
95
+ fs.readFile({
96
+ filePath,
97
+ success: (fileRes) => {
98
+ fun(fileRes.data)
99
+ },
100
+ fail: () => {
101
+ uni.showToast({
102
+ title: '上传失败',
103
+ icon: 'none',
104
+ })
105
+ uni.$lcb.loadingStore?.().changeLoading(pageRoute, false)
106
+ },
107
+ })
108
+ }
109
+
110
+ // #endif
111
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tplc/business",
3
- "version": "0.0.41",
3
+ "version": "0.0.48",
4
4
  "keywords": [
5
5
  "业务组件"
6
6
  ],
@@ -11,7 +11,7 @@
11
11
  },
12
12
  "peerDependencies": {
13
13
  "vue": ">=3.2.47",
14
- "@tplc/wot": "0.1.17"
14
+ "@tplc/wot": "0.1.20"
15
15
  },
16
16
  "engines": {
17
17
  "node": ">=18",
@@ -10,10 +10,30 @@ declare const __VLS_component: import('vue').DefineComponent<
10
10
  {},
11
11
  import('vue').ComponentOptionsMixin,
12
12
  import('vue').ComponentOptionsMixin,
13
- {},
13
+ {
14
+ phone: (value: {
15
+ detail: {
16
+ errMsg: string
17
+ encryptedData: string
18
+ iv: string
19
+ }
20
+ }) => void
21
+ avatar: (value: string) => void
22
+ },
14
23
  string,
15
24
  import('vue').PublicProps,
16
- Readonly<import('vue').ExtractPropTypes<__VLS_TypePropsToOption<LcbActionViewProps>>>,
25
+ Readonly<import('vue').ExtractPropTypes<__VLS_TypePropsToOption<LcbActionViewProps>>> & {
26
+ onPhone?:
27
+ | ((value: {
28
+ detail: {
29
+ errMsg: string
30
+ encryptedData: string
31
+ iv: string
32
+ }
33
+ }) => any)
34
+ | undefined
35
+ onAvatar?: ((value: string) => any) | undefined
36
+ },
17
37
  {},
18
38
  {}
19
39
  >
@@ -2,6 +2,6 @@ export interface LcbDynamicDataProps {
2
2
  items: {
3
3
  title: string
4
4
  unit?: string
5
- key?: string
5
+ key: string
6
6
  }[]
7
7
  }
@@ -1,5 +1,8 @@
1
1
  import { LcbFilterListProps } from './type'
2
- declare const _default: import('vue').DefineComponent<
2
+ declare function __VLS_template(): {
3
+ default?(_: { items: any[] }): any
4
+ }
5
+ declare const __VLS_component: import('vue').DefineComponent<
3
6
  __VLS_TypePropsToOption<LcbFilterListProps>,
4
7
  {},
5
8
  unknown,
@@ -14,7 +17,16 @@ declare const _default: import('vue').DefineComponent<
14
17
  {},
15
18
  {}
16
19
  >
20
+ declare const _default: __VLS_WithTemplateSlots<
21
+ typeof __VLS_component,
22
+ ReturnType<typeof __VLS_template>
23
+ >
17
24
  export default _default
25
+ type __VLS_WithTemplateSlots<T, S> = T & {
26
+ new (): {
27
+ $slots: S
28
+ }
29
+ }
18
30
  type __VLS_NonUndefinedable<T> = T extends undefined ? never : T
19
31
  type __VLS_TypePropsToOption<T> = {
20
32
  [K in keyof T]-?: {} extends Pick<T, K>
@@ -1,6 +1,9 @@
1
1
  import { LcbListProps } from './types'
2
2
  import './index.scss'
3
- declare const _default: import('vue').DefineComponent<
3
+ declare function __VLS_template(): {
4
+ list?(_: { items: any[] }): any
5
+ }
6
+ declare const __VLS_component: import('vue').DefineComponent<
4
7
  __VLS_WithDefaults<__VLS_TypePropsToOption<LcbListProps>, any>,
5
8
  {},
6
9
  unknown,
@@ -23,6 +26,10 @@ declare const _default: import('vue').DefineComponent<
23
26
  },
24
27
  {}
25
28
  >
29
+ declare const _default: __VLS_WithTemplateSlots<
30
+ typeof __VLS_component,
31
+ ReturnType<typeof __VLS_template>
32
+ >
26
33
  export default _default
27
34
  type __VLS_WithDefaults<P, D> = {
28
35
  [K in keyof Pick<P, keyof P>]: K extends keyof D
@@ -36,6 +43,11 @@ type __VLS_WithDefaults<P, D> = {
36
43
  type __VLS_Prettify<T> = {
37
44
  [K in keyof T]: T[K]
38
45
  } & {}
46
+ type __VLS_WithTemplateSlots<T, S> = T & {
47
+ new (): {
48
+ $slots: S
49
+ }
50
+ }
39
51
  type __VLS_NonUndefinedable<T> = T extends undefined ? never : T
40
52
  type __VLS_TypePropsToOption<T> = {
41
53
  [K in keyof T]-?: {} extends Pick<T, K>
@@ -52,8 +52,8 @@ declare const _default: import('vue').DefineComponent<
52
52
  >
53
53
  >,
54
54
  {
55
- fixed: boolean
56
55
  title: string
56
+ fixed: boolean
57
57
  styleGroup: 1 | 2 | 3 | 4
58
58
  back: boolean
59
59
  topStyle: 1 | 2
@@ -1,5 +1,30 @@
1
1
  import { LcbProductProps } from './types'
2
- declare const _default: import('vue').DefineComponent<
2
+ declare function __VLS_template(): Readonly<{
3
+ image(): any
4
+ title(): any
5
+ subTitle(): any
6
+ price(): any
7
+ priceUnit(): any
8
+ priceSuffix(): any
9
+ originPrice(): any
10
+ originPriceUnit(): any
11
+ tags(): any
12
+ location(): any
13
+ distance(): any
14
+ }> & {
15
+ image(): any
16
+ title(): any
17
+ subTitle(): any
18
+ price(): any
19
+ priceUnit(): any
20
+ priceSuffix(): any
21
+ originPrice(): any
22
+ originPriceUnit(): any
23
+ tags(): any
24
+ location(): any
25
+ distance(): any
26
+ }
27
+ declare const __VLS_component: import('vue').DefineComponent<
3
28
  __VLS_WithDefaults<__VLS_TypePropsToOption<LcbProductProps>, any>,
4
29
  {},
5
30
  unknown,
@@ -24,6 +49,10 @@ declare const _default: import('vue').DefineComponent<
24
49
  },
25
50
  {}
26
51
  >
52
+ declare const _default: __VLS_WithTemplateSlots<
53
+ typeof __VLS_component,
54
+ ReturnType<typeof __VLS_template>
55
+ >
27
56
  export default _default
28
57
  type __VLS_WithDefaults<P, D> = {
29
58
  [K in keyof Pick<P, keyof P>]: K extends keyof D
@@ -37,6 +66,11 @@ type __VLS_WithDefaults<P, D> = {
37
66
  type __VLS_Prettify<T> = {
38
67
  [K in keyof T]: T[K]
39
68
  } & {}
69
+ type __VLS_WithTemplateSlots<T, S> = T & {
70
+ new (): {
71
+ $slots: S
72
+ }
73
+ }
40
74
  type __VLS_NonUndefinedable<T> = T extends undefined ? never : T
41
75
  type __VLS_TypePropsToOption<T> = {
42
76
  [K in keyof T]-?: {} extends Pick<T, K>
@@ -1,4 +1,13 @@
1
- declare const _default: import('vue').DefineComponent<
1
+ declare function __VLS_template(): {
2
+ image?(_: { value: any }): any
3
+ title?(_: { value: any }): any
4
+ location?(_: { value: any }): any
5
+ tags?(_: { value: any }): any
6
+ priceUnit?(_: { value: any }): any
7
+ price?(_: { value: any }): any
8
+ priceSuffix?(_: { value: any }): any
9
+ }
10
+ declare const __VLS_component: import('vue').DefineComponent<
2
11
  __VLS_WithDefaults<
3
12
  __VLS_TypePropsToOption<{
4
13
  prop: string
@@ -29,6 +38,10 @@ declare const _default: import('vue').DefineComponent<
29
38
  {},
30
39
  {}
31
40
  >
41
+ declare const _default: __VLS_WithTemplateSlots<
42
+ typeof __VLS_component,
43
+ ReturnType<typeof __VLS_template>
44
+ >
32
45
  export default _default
33
46
  type __VLS_WithDefaults<P, D> = {
34
47
  [K in keyof Pick<P, keyof P>]: K extends keyof D
@@ -42,6 +55,11 @@ type __VLS_WithDefaults<P, D> = {
42
55
  type __VLS_Prettify<T> = {
43
56
  [K in keyof T]: T[K]
44
57
  } & {}
58
+ type __VLS_WithTemplateSlots<T, S> = T & {
59
+ new (): {
60
+ $slots: S
61
+ }
62
+ }
45
63
  type __VLS_NonUndefinedable<T> = T extends undefined ? never : T
46
64
  type __VLS_TypePropsToOption<T> = {
47
65
  [K in keyof T]-?: {} extends Pick<T, K>
@@ -1,5 +1,30 @@
1
1
  import { LcbProductItemProps } from './types'
2
- declare const _default: import('vue').DefineComponent<
2
+ declare function __VLS_template(): Readonly<{
3
+ image(): any
4
+ title(): any
5
+ subTitle(): any
6
+ price(): any
7
+ priceUnit(): any
8
+ priceSuffix(): any
9
+ originPrice(): any
10
+ originPriceUnit(): any
11
+ tags(): any
12
+ location(): any
13
+ distance(): any
14
+ }> & {
15
+ image(): any
16
+ title(): any
17
+ subTitle(): any
18
+ price(): any
19
+ priceUnit(): any
20
+ priceSuffix(): any
21
+ originPrice(): any
22
+ originPriceUnit(): any
23
+ tags(): any
24
+ location(): any
25
+ distance(): any
26
+ }
27
+ declare const __VLS_component: import('vue').DefineComponent<
3
28
  __VLS_WithDefaults<
4
29
  __VLS_TypePropsToOption<LcbProductItemProps>,
5
30
  {
@@ -52,9 +77,9 @@ declare const _default: import('vue').DefineComponent<
52
77
  >
53
78
  >,
54
79
  {
55
- layoutType: 'vertical' | 'horizontal'
56
80
  priceUnit: any
57
81
  originPriceUnit: any
82
+ layoutType: 'vertical' | 'horizontal'
58
83
  imageVisible: boolean
59
84
  titleVisible: boolean
60
85
  subTitleVisible: boolean
@@ -69,6 +94,10 @@ declare const _default: import('vue').DefineComponent<
69
94
  },
70
95
  {}
71
96
  >
97
+ declare const _default: __VLS_WithTemplateSlots<
98
+ typeof __VLS_component,
99
+ ReturnType<typeof __VLS_template>
100
+ >
72
101
  export default _default
73
102
  type __VLS_WithDefaults<P, D> = {
74
103
  [K in keyof Pick<P, keyof P>]: K extends keyof D
@@ -82,6 +111,11 @@ type __VLS_WithDefaults<P, D> = {
82
111
  type __VLS_Prettify<T> = {
83
112
  [K in keyof T]: T[K]
84
113
  } & {}
114
+ type __VLS_WithTemplateSlots<T, S> = T & {
115
+ new (): {
116
+ $slots: S
117
+ }
118
+ }
85
119
  type __VLS_NonUndefinedable<T> = T extends undefined ? never : T
86
120
  type __VLS_TypePropsToOption<T> = {
87
121
  [K in keyof T]-?: {} extends Pick<T, K>