@tplc/business 0.4.85 → 0.4.87

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/CHANGELOG.md CHANGED
@@ -2,6 +2,33 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
4
4
 
5
+ ### [0.4.87](http://gitlab888.30jia.com.cn/bhBank/zero-code-pro/compare/v0.4.86...v0.4.87) (2025-05-04)
6
+
7
+ ### [0.4.86](http://gitlab888.30jia.com.cn/bhBank/zero-code-pro/compare/v0.4.83...v0.4.86) (2025-05-04)
8
+
9
+
10
+ ### 🐛 Bug Fixes | Bug 修复
11
+
12
+ * 修改商品展示 ([8d3ef34](http://gitlab888.30jia.com.cn/bhBank/zero-code-pro/commit/8d3ef34a8693fa3a5a3c89fd99c2ac3aa8ac195f))
13
+
14
+
15
+ ### 🚀 Chore | 构建/工程依赖/工具
16
+
17
+ * **release:** 0.4.84 ([7b56ae5](http://gitlab888.30jia.com.cn/bhBank/zero-code-pro/commit/7b56ae598549ea40cec87cdcf8719a29b6c132b1))
18
+ * **release:** 0.4.85 ([d00bbf5](http://gitlab888.30jia.com.cn/bhBank/zero-code-pro/commit/d00bbf5404960514b00b9e0602709a200ad5b670))
19
+
20
+
21
+ ### ✨ Features | 新功能
22
+
23
+ * horizontal 支持gap ([8d5d3c8](http://gitlab888.30jia.com.cn/bhBank/zero-code-pro/commit/8d5d3c8732b1adb6dc9afd2e5c51836a58573c8b))
24
+ * version ([013ff3f](http://gitlab888.30jia.com.cn/bhBank/zero-code-pro/commit/013ff3f0118badd815876911e0e8faa11236b076))
25
+ * 价格居中 ([91dd0e9](http://gitlab888.30jia.com.cn/bhBank/zero-code-pro/commit/91dd0e96048f3a26f9c990e04dc07ce5c08377c9))
26
+ * 支持图片 ([aa756b1](http://gitlab888.30jia.com.cn/bhBank/zero-code-pro/commit/aa756b181a530f9748c56d631eebe0b04d2f847a))
27
+ * 新增页面 ([82aaddd](http://gitlab888.30jia.com.cn/bhBank/zero-code-pro/commit/82aaddda0c747c03af1ac59a89aff8eee70bbc25))
28
+ * 暂时支持template ([8d413fe](http://gitlab888.30jia.com.cn/bhBank/zero-code-pro/commit/8d413fee8ea18d86167b733f66fea8a59eaf7c49))
29
+ * 调整布局 ([4a95740](http://gitlab888.30jia.com.cn/bhBank/zero-code-pro/commit/4a957408f27e2555c1078994cca20712e7be7003))
30
+ * 跳转布局问题 ([1b5d4ba](http://gitlab888.30jia.com.cn/bhBank/zero-code-pro/commit/1b5d4bab4a59318bae79fdd4a435b5a32208ddcf))
31
+
5
32
  ### [0.4.85](http://gitlab888.30jia.com.cn/bhBank/zero-code-pro/compare/v0.4.84...v0.4.85) (2025-04-30)
6
33
 
7
34
 
package/api/user.ts CHANGED
@@ -4,3 +4,11 @@ export const getUserPhone = (data: { encryptedData: string; iv: string; code?: s
4
4
  ...data,
5
5
  appId: (import.meta as any).env.VITE_WX_APPID,
6
6
  })
7
+ export interface TemplateMessage {
8
+ templateId: string
9
+ }
10
+ /** 获取模板消息列表 */
11
+ export const getTemplateMessageList = async (events = 'taskOrder') => {
12
+ const { data } = await uni.$lcb.http.post<TemplateMessage[]>('/templateMessage/list', { events })
13
+ return data
14
+ }
@@ -55,7 +55,7 @@
55
55
  </template>
56
56
 
57
57
  <script setup lang="ts">
58
- import { computed, ref, inject, Ref } from 'vue'
58
+ import { computed, ref, inject, Ref, onMounted } from 'vue'
59
59
  import { LcbActionViewProps } from './types'
60
60
  import { uploadFile } from '../../hooks/useUpload'
61
61
  import mpHtml from 'mp-html/src/uni-app/components/mp-html/mp-html.vue'
@@ -63,6 +63,7 @@ import { getFinalUrl, onPageScrollSelector, getExposed } from '../../utils/utils
63
63
  import SharePopup from '../lcb-nav/SharePopup/index.vue'
64
64
  import { useTranslate } from '@tplc/wot'
65
65
  import { PAGE_PROVIDE_KEY, USER_BASIC_INFO } from '../../constants'
66
+ import { getTemplateMessageList, TemplateMessage } from '../../api/user'
66
67
  const { translate } = useTranslate()
67
68
  defineOptions({
68
69
  name: 'LcbActionView',
@@ -72,6 +73,7 @@ defineOptions({
72
73
  styleIsolation: 'shared',
73
74
  },
74
75
  })
76
+
75
77
  const props = defineProps<LcbActionViewProps>()
76
78
  const basicInfo = inject(USER_BASIC_INFO, {}) as unknown as Ref<Record<string, any>>
77
79
  const pageInfo = inject(PAGE_PROVIDE_KEY) as unknown as Ref<Record<string, any>>
@@ -83,7 +85,13 @@ const emits = defineEmits<{
83
85
  (e: 'refresh', value: void): void
84
86
  (e: 'nav', value: void): void
85
87
  }>()
86
-
88
+ const templateMessageList = ref<TemplateMessage[]>([])
89
+ onMounted(async () => {
90
+ if (props.jumpType === 142 && props.events) {
91
+ const data = await getTemplateMessageList(props.events)
92
+ templateMessageList.value = data
93
+ }
94
+ })
87
95
  const show = ref(false)
88
96
  const openType = computed(() => {
89
97
  return {
@@ -249,6 +257,9 @@ const onActionClick = async () => {
249
257
  url: `/pages/system/imagePreview`,
250
258
  })
251
259
  break
260
+ case 142:
261
+ onTemplateMessage()
262
+ break
252
263
  default:
253
264
  emits('click')
254
265
  break
@@ -275,6 +286,21 @@ const onCopy = (data?: string) => {
275
286
  data,
276
287
  })
277
288
  }
289
+ const onTemplateMessage = async () => {
290
+ if (templateMessageList.value?.length) {
291
+ uni.requestSubscribeMessage({
292
+ tmplIds: templateMessageList.value.map((item) => item.templateId),
293
+ success: () => {
294
+ emits('click')
295
+ },
296
+ fail: () => {
297
+ emits('click')
298
+ },
299
+ })
300
+ } else {
301
+ emits('click')
302
+ }
303
+ }
278
304
  </script>
279
305
 
280
306
  <style lang="scss" scoped>
@@ -14,7 +14,7 @@ export type LcbActionViewProps = {
14
14
  * 13: 退出登录 14: 小程序弹框 16: 小程序锚点 17 网络请求 21: 新窗口跳到页面 22: 切换TAB页 23: 重启进入某页面
15
15
  * 24: 回到上一层 25: 关闭当前页面 26: 关闭当前窗口 30: 拨打电话
16
16
  * 88: 授权手机号 101 用户头像 102 分享 103 意见反馈 104 打开授权设置页
17
- * 105 查看地图 106 查看地图 141 二维码 241 返回并刷新上个页面
17
+ * 105 查看地图 106 查看地图 141 二维码 241 返回并刷新上个页面 142 模板消息
18
18
  * 107 图片预览
19
19
  */
20
20
  jumpType?:
@@ -83,4 +83,8 @@ export type LcbActionViewProps = {
83
83
  typeName: string
84
84
  }[]
85
85
  }
86
+ | {
87
+ jumpType: 142
88
+ events: string
89
+ }
86
90
  )
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <lcb-block v-bind="$props">
2
+ <lcb-block v-bind="$props" v-if="renderItems?.length">
3
3
  <lcb-title
4
4
  v-if="showTitle"
5
5
  v-bind="{
@@ -131,6 +131,7 @@ const props = withDefaults(defineProps<LcbImgNavProps>(), {
131
131
  divider: true,
132
132
  arrowSize: 44,
133
133
  arrowColor: '#212121',
134
+ reverse: false,
134
135
  })
135
136
 
136
137
  const renderItems = computed(() => {
@@ -138,9 +139,13 @@ const renderItems = computed(() => {
138
139
  props.items?.filter((item) => {
139
140
  if (item.dependKey) {
140
141
  if (item.keyFromUser) {
141
- return Boolean(userStore?.userInfo?.[item.dependKey])
142
+ return props.reverse
143
+ ? !userStore?.userInfo?.[item.dependKey]
144
+ : Boolean(userStore?.userInfo?.[item.dependKey])
142
145
  } else {
143
- return Boolean(pageInfo.value?.[item.dependKey])
146
+ return props.reverse
147
+ ? !pageInfo.value?.[item.dependKey]
148
+ : Boolean(pageInfo.value?.[item.dependKey])
144
149
  }
145
150
  }
146
151
  return true
@@ -18,6 +18,8 @@ export interface LcbImgNavProps extends LcbBlockProps {
18
18
  dependKey?: string
19
19
  /** 依赖值类型 */
20
20
  keyFromUser?: boolean
21
+ /** 依赖值反选 */
22
+ reverse?: boolean
21
23
  })[]
22
24
  /** 排布方式每行几个 */
23
25
  pictureDistribution?: 3 | 4 | 5
@@ -233,7 +233,7 @@ defineExpose({
233
233
  </view>
234
234
 
235
235
  <view
236
- class="lcb-product-waterfall p-0.5 !py-1"
236
+ class="lcb-product-waterfall !py-1"
237
237
  v-else-if="listType === 'waterfall'"
238
238
  :style="{
239
239
  width: itemWidth ? `${itemWidth}rpx` : '100%',
@@ -95,7 +95,7 @@ const value = computed(() => {
95
95
 
96
96
  const coverImgWidth = computed(() => {
97
97
  if (style.value.width) {
98
- return style.value.width.replace('rpx', '')
98
+ return style.value.width
99
99
  }
100
100
  return '100%'
101
101
  })
@@ -0,0 +1,60 @@
1
+ <template>
2
+ <lcb-block v-bind="$props">
3
+ <view
4
+ :class="{
5
+ 'flex flex-wrap': tagsMode === 'tiled',
6
+ 'flex whitespace-nowrap overflow-x-auto': tagsMode === 'scroll',
7
+ }"
8
+ :style="{
9
+ gap: transformValueUnit(gap),
10
+ }"
11
+ >
12
+ <wd-img
13
+ v-for="(item, index) in items"
14
+ :key="index"
15
+ :class="{
16
+ 'inline-block': tagsMode === 'scroll',
17
+ }"
18
+ :style="{
19
+ fontSize: transformValueUnit(itemFontSize),
20
+ }"
21
+ :width="transformValueUnit(imgWidth)"
22
+ height="auto"
23
+ mode="widthFix"
24
+ :src="current === index ? item.activeUrl : item.inactiveUrl"
25
+ @click="handleTagClick(item.name, index)"
26
+ />
27
+ </view>
28
+ </lcb-block>
29
+ </template>
30
+
31
+ <script setup lang="ts">
32
+ import { ref } from 'vue'
33
+ import useSyncForm from '../../../../hooks/useSyncForm'
34
+ import { transformValueUnit } from '../../../../utils/transform'
35
+ import { LcbTabsProps } from '../../types'
36
+ const props = withDefaults(defineProps<LcbTabsProps>(), {})
37
+ const { syncForm } = useSyncForm(props.dynamicScope)
38
+ const current = ref(0)
39
+ defineOptions({
40
+ name: 'LcbTagsItem',
41
+ options: {
42
+ addGlobalClass: true,
43
+ virtualHost: true,
44
+ styleIsolation: 'shared',
45
+ },
46
+ })
47
+ const handleTagClick = (name: string, index: number) => {
48
+ current.value = index
49
+ try {
50
+ syncForm(JSON.parse(name))
51
+ } catch (error) {
52
+ console.error(error)
53
+ }
54
+ }
55
+ handleTagClick(props.items?.[0].name, 0)
56
+ </script>
57
+
58
+ <style lang="scss" scoped>
59
+ @import '@tplc/wot/components/common/abstracts/variable';
60
+ </style>
@@ -52,6 +52,7 @@ const handleTagClick = (name: string, index: number) => {
52
52
  console.error(error)
53
53
  }
54
54
  }
55
+ handleTagClick(props.items[0]?.name, 0)
55
56
  </script>
56
57
 
57
58
  <style lang="scss" scoped>
@@ -2,15 +2,18 @@
2
2
  <wd-sticky v-if="sticky">
3
3
  <view class="w-100vw">
4
4
  <Tabs v-bind="$props" v-if="mode === 'tabs'" />
5
+ <Imgs v-bind="$props" v-else-if="mode === 'image'" />
5
6
  <Tags v-bind="$props" v-else />
6
7
  </view>
7
8
  </wd-sticky>
8
9
  <Tabs v-else-if="mode === 'tabs'" v-bind="$props" />
10
+ <Imgs v-else-if="mode === 'image'" v-bind="$props" />
9
11
  <Tags v-else v-bind="$props" />
10
12
  </template>
11
13
 
12
14
  <script setup lang="ts">
13
15
  import { LcbTabsProps } from './types'
16
+ import Imgs from './components/Imgs/index.vue'
14
17
  import Tabs from './components/Tabs/index.vue'
15
18
  import Tags from './components/Tags/index.vue'
16
19
  defineOptions({
@@ -25,6 +28,7 @@ withDefaults(defineProps<LcbTabsProps>(), {
25
28
  itemFontSize: 28,
26
29
  tagsMode: 'tiled',
27
30
  gap: 16,
31
+ imgWidth: 100,
28
32
  })
29
33
  </script>
30
34
 
@@ -6,14 +6,17 @@ export interface LcbTabsProps extends LcbBlockProps {
6
6
  items: {
7
7
  title: string
8
8
  name: string
9
+ activeUrl?: string
10
+ inactiveUrl?: string
9
11
  }[]
10
12
  lineWidth?: number
11
13
  lineHeight?: number
12
14
  slidable?: 'always' | 'auto'
13
15
  slidableNum?: number
14
16
  itemFontSize?: number
15
- mode?: 'tabs' | 'block'
17
+ mode?: 'tabs' | 'block' | 'image'
16
18
  tagsMode?: 'scroll' | 'tiled'
17
19
  gap?: number
18
20
  dynamicScope?: string
21
+ imgWidth?: number
19
22
  }
@@ -143,7 +143,7 @@ defineOptions({
143
143
  },
144
144
  })
145
145
  const userStore = uni.$lcb.userStore?.()
146
- userStore?.getUser()
146
+ // userStore?.getUser()
147
147
  withDefaults(defineProps<LcbUserTopProps>(), {
148
148
  photoSize: 100,
149
149
  paddingLeft: 35,
@@ -52,25 +52,46 @@ export async function uploadFile({
52
52
  }) {
53
53
  const pageRoute = getCurrentPages().at(-1)?.route || ''
54
54
  uni.$lcb.loadingStore?.().changeLoading(pageRoute, true)
55
- const { uploadUrl, ossType, fileUrl } = await uploadByUrl(`${new Date().getTime()}_${name}`)
56
- const fun = (fileData: any) => {
57
- uni.request({
58
- url: uploadUrl,
59
- method: 'PUT',
60
- data: fileData,
61
- header:
62
- ossType === 'tyyun'
63
- ? {
64
- 'x-amz-acl': 'public-read',
65
- 'Content-Type': 'image',
66
- }
67
- : {
68
- 'Content-Type': ' ',
69
- },
70
- success: () => {
71
- onSuccess?.(fileUrl)
72
- if (data) data.value = fileUrl
73
- uni.$lcb.loadingStore?.().changeLoading(pageRoute, false)
55
+ try {
56
+ const { uploadUrl, ossType, fileUrl } = await uploadByUrl(`${new Date().getTime()}_${name}`)
57
+ const fun = (fileData: any) => {
58
+ uni.request({
59
+ url: uploadUrl,
60
+ method: 'PUT',
61
+ data: fileData,
62
+ header:
63
+ ossType === 'tyyun'
64
+ ? {
65
+ 'x-amz-acl': 'public-read',
66
+ 'Content-Type': 'image',
67
+ }
68
+ : {
69
+ 'Content-Type': ' ',
70
+ },
71
+ success: () => {
72
+ onSuccess?.(fileUrl)
73
+ if (data) data.value = fileUrl
74
+ uni.$lcb.loadingStore?.().changeLoading(pageRoute, false)
75
+ },
76
+ fail: () => {
77
+ uni.showToast({
78
+ title: '上传失败',
79
+ icon: 'none',
80
+ })
81
+ uni.$lcb.loadingStore?.().changeLoading(pageRoute, false)
82
+ },
83
+ })
84
+ }
85
+ // #ifdef H5
86
+ fun(await (await fetch(filePath)).arrayBuffer())
87
+ // #endif
88
+
89
+ // #ifndef H5
90
+ const fs = uni.getFileSystemManager()
91
+ fs.readFile({
92
+ filePath,
93
+ success: (fileRes) => {
94
+ fun(fileRes.data)
74
95
  },
75
96
  fail: () => {
76
97
  uni.showToast({
@@ -80,25 +101,8 @@ export async function uploadFile({
80
101
  uni.$lcb.loadingStore?.().changeLoading(pageRoute, false)
81
102
  },
82
103
  })
104
+ // #endif
105
+ } catch (error) {
106
+ uni.$lcb.loadingStore?.().changeLoading(pageRoute, false)
83
107
  }
84
- // #ifdef H5
85
- fun(await (await fetch(filePath)).arrayBuffer())
86
- // #endif
87
-
88
- // #ifndef H5
89
- const fs = uni.getFileSystemManager()
90
- fs.readFile({
91
- filePath,
92
- success: (fileRes) => {
93
- fun(fileRes.data)
94
- },
95
- fail: () => {
96
- uni.showToast({
97
- title: '上传失败',
98
- icon: 'none',
99
- })
100
- uni.$lcb.loadingStore?.().changeLoading(pageRoute, false)
101
- },
102
- })
103
- // #endif
104
108
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tplc/business",
3
- "version": "0.4.85",
3
+ "version": "0.4.87",
4
4
  "keywords": [
5
5
  "业务组件"
6
6
  ],
@@ -0,0 +1,11 @@
1
+ /** 获取用户手机号 */
2
+ export declare const getUserPhone: (data: {
3
+ encryptedData: string
4
+ iv: string
5
+ code?: string
6
+ }) => Promise<import('../action').IResData<unknown>>
7
+ export interface TemplateMessage {
8
+ templateId: string
9
+ }
10
+ /** 获取模板消息列表 */
11
+ export declare const getTemplateMessageList: (events?: string) => Promise<TemplateMessage[]>
@@ -15,7 +15,7 @@ declare const __VLS_component: import('vue').DefineComponent<
15
15
  string,
16
16
  import('vue').PublicProps,
17
17
  any,
18
- {} | {} | {} | {} | {} | {} | {},
18
+ {} | {} | {} | {} | {} | {} | {} | {},
19
19
  {}
20
20
  >
21
21
  declare const _default: __VLS_WithTemplateSlots<
@@ -13,7 +13,7 @@ export type LcbActionViewProps = {
13
13
  * 13: 退出登录 14: 小程序弹框 16: 小程序锚点 17 网络请求 21: 新窗口跳到页面 22: 切换TAB页 23: 重启进入某页面
14
14
  * 24: 回到上一层 25: 关闭当前页面 26: 关闭当前窗口 30: 拨打电话
15
15
  * 88: 授权手机号 101 用户头像 102 分享 103 意见反馈 104 打开授权设置页
16
- * 105 查看地图 106 查看地图 141 二维码 241 返回并刷新上个页面
16
+ * 105 查看地图 106 查看地图 141 二维码 241 返回并刷新上个页面 142 模板消息
17
17
  * 107 图片预览
18
18
  */
19
19
  jumpType?:
@@ -80,4 +80,8 @@ export type LcbActionViewProps = {
80
80
  typeName: string
81
81
  }[]
82
82
  }
83
+ | {
84
+ jumpType: 142
85
+ events: string
86
+ }
83
87
  )
@@ -21,6 +21,7 @@ declare const _default: import('vue').DefineComponent<
21
21
  divider: boolean
22
22
  arrowSize: number
23
23
  arrowColor: string
24
+ reverse: boolean
24
25
  }
25
26
  >,
26
27
  {},
@@ -57,6 +58,7 @@ declare const _default: import('vue').DefineComponent<
57
58
  divider: boolean
58
59
  arrowSize: number
59
60
  arrowColor: string
61
+ reverse: boolean
60
62
  }
61
63
  >
62
64
  >
@@ -17,6 +17,8 @@ export interface LcbImgNavProps extends LcbBlockProps {
17
17
  dependKey?: string
18
18
  /** 依赖值类型 */
19
19
  keyFromUser?: boolean
20
+ /** 依赖值反选 */
21
+ reverse?: boolean
20
22
  })[]
21
23
  /** 排布方式每行几个 */
22
24
  pictureDistribution?: 3 | 4 | 5
@@ -553,6 +553,75 @@ declare const _default: import('vue').DefineComponent<
553
553
  }
554
554
  >
555
555
  >
556
+ >
557
+ | Readonly<
558
+ import('vue').ExtractPropTypes<
559
+ __VLS_WithDefaults<
560
+ __VLS_TypePropsToOption<
561
+ {
562
+ placeholder?: string
563
+ icon?: string
564
+ url?: string
565
+ iconSize?: string
566
+ borderWidth?: number
567
+ iconColor?: string
568
+ gap?: number
569
+ link?: import('../lcb-action-view/types').LcbActionViewProps
570
+ iconType?: 'icon' | 'img'
571
+ mode?: 'search' | 'link'
572
+ productTypeList?: string[]
573
+ city?: boolean
574
+ cityColor?: string
575
+ citySize?: number
576
+ cityIconSize?: number
577
+ cityIconColor?: string
578
+ lineColor?: string
579
+ lineWidth?: number
580
+ linePadding?: number
581
+ lineHeight?: number
582
+ historyKey?: string
583
+ showCancel?: boolean
584
+ initFocus?: boolean
585
+ blockBackground?: string
586
+ } & {
587
+ jumpUrl?: string
588
+ urlParams?: string
589
+ customClass?: string
590
+ customStyle?: import('vue').StyleValue
591
+ renderMode?: 'view' | 'button'
592
+ } & {
593
+ jumpType: 142
594
+ events: string
595
+ } & import('../lcb-block/types').LcbBlockProps
596
+ >,
597
+ {
598
+ placeholder: string
599
+ iconSize: string
600
+ borderWidth: number
601
+ color: string
602
+ iconColor: string
603
+ gap: number
604
+ paddingVertical: number
605
+ marginHorizontal: number
606
+ cityColor: string
607
+ citySize: number
608
+ cityIconSize: number
609
+ radius: number
610
+ paddingHorizontal: number
611
+ borderColor: string
612
+ cityIconColor: string
613
+ lineColor: string
614
+ lineWidth: number
615
+ linePadding: number
616
+ lineHeight: number
617
+ iconType: string
618
+ mode: string
619
+ fontSize: number
620
+ initFocus: boolean
621
+ showCancel: boolean
622
+ }
623
+ >
624
+ >
556
625
  >,
557
626
  | {
558
627
  mode: 'search' | 'link'
@@ -710,6 +779,32 @@ declare const _default: import('vue').DefineComponent<
710
779
  showCancel: boolean
711
780
  initFocus: boolean
712
781
  }
782
+ | {
783
+ mode: 'search' | 'link'
784
+ color: string
785
+ lineHeight: number
786
+ radius: number
787
+ iconSize: string
788
+ iconColor: string
789
+ marginHorizontal: number
790
+ paddingHorizontal: number
791
+ paddingVertical: number
792
+ fontSize: number
793
+ borderColor: string
794
+ borderWidth: number
795
+ gap: number
796
+ placeholder: string
797
+ lineWidth: number
798
+ iconType: 'icon' | 'img'
799
+ cityColor: string
800
+ citySize: number
801
+ cityIconSize: number
802
+ cityIconColor: string
803
+ lineColor: string
804
+ linePadding: number
805
+ showCancel: boolean
806
+ initFocus: boolean
807
+ }
713
808
  | {
714
809
  mode: 'search' | 'link'
715
810
  color: string
@@ -0,0 +1,42 @@
1
+ import { LcbTabsProps } from '../../types'
2
+ declare const _default: import('vue').DefineComponent<
3
+ __VLS_WithDefaults<__VLS_TypePropsToOption<LcbTabsProps>, {}>,
4
+ {},
5
+ unknown,
6
+ {},
7
+ {},
8
+ import('vue').ComponentOptionsMixin,
9
+ import('vue').ComponentOptionsMixin,
10
+ {},
11
+ string,
12
+ import('vue').PublicProps,
13
+ Readonly<
14
+ import('vue').ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToOption<LcbTabsProps>, {}>>
15
+ >,
16
+ {},
17
+ {}
18
+ >
19
+ export default _default
20
+ type __VLS_WithDefaults<P, D> = {
21
+ [K in keyof Pick<P, keyof P>]: K extends keyof D
22
+ ? __VLS_Prettify<
23
+ P[K] & {
24
+ default: D[K]
25
+ }
26
+ >
27
+ : P[K]
28
+ }
29
+ type __VLS_Prettify<T> = {
30
+ [K in keyof T]: T[K]
31
+ } & {}
32
+ type __VLS_NonUndefinedable<T> = T extends undefined ? never : T
33
+ type __VLS_TypePropsToOption<T> = {
34
+ [K in keyof T]-?: {} extends Pick<T, K>
35
+ ? {
36
+ type: import('vue').PropType<__VLS_NonUndefinedable<T[K]>>
37
+ }
38
+ : {
39
+ type: import('vue').PropType<T[K]>
40
+ required: true
41
+ }
42
+ }
@@ -6,6 +6,7 @@ declare const _default: import('vue').DefineComponent<
6
6
  itemFontSize: number
7
7
  tagsMode: string
8
8
  gap: number
9
+ imgWidth: number
9
10
  }
10
11
  >,
11
12
  {},
@@ -25,11 +26,13 @@ declare const _default: import('vue').DefineComponent<
25
26
  itemFontSize: number
26
27
  tagsMode: string
27
28
  gap: number
29
+ imgWidth: number
28
30
  }
29
31
  >
30
32
  >
31
33
  >,
32
34
  {
35
+ imgWidth: number
33
36
  gap: number
34
37
  itemFontSize: number
35
38
  tagsMode: 'scroll' | 'tiled'
@@ -5,14 +5,17 @@ export interface LcbTabsProps extends LcbBlockProps {
5
5
  items: {
6
6
  title: string
7
7
  name: string
8
+ activeUrl?: string
9
+ inactiveUrl?: string
8
10
  }[]
9
11
  lineWidth?: number
10
12
  lineHeight?: number
11
13
  slidable?: 'always' | 'auto'
12
14
  slidableNum?: number
13
15
  itemFontSize?: number
14
- mode?: 'tabs' | 'block'
16
+ mode?: 'tabs' | 'block' | 'image'
15
17
  tagsMode?: 'scroll' | 'tiled'
16
18
  gap?: number
17
19
  dynamicScope?: string
20
+ imgWidth?: number
18
21
  }