@tplc/business 0.3.61 → 0.3.62

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,19 @@
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.3.62](http://gitlab888.30jia.com.cn/bhBank/zero-code-pro/compare/v0.1.62...v0.3.62) (2025-02-27)
6
+
7
+
8
+ ### ✨ Features | 新功能
9
+
10
+ * calendar 支持 withCell ([c8c21ad](http://gitlab888.30jia.com.cn/bhBank/zero-code-pro/commit/c8c21adaf5c1bb402f34c99a04b7a2ee39b12563))
11
+ * product 支持 request ([3e708e0](http://gitlab888.30jia.com.cn/bhBank/zero-code-pro/commit/3e708e02e9ce504b699357a4e04852be9140f515))
12
+ * product 支持刷新 ([39bfec8](http://gitlab888.30jia.com.cn/bhBank/zero-code-pro/commit/39bfec829996bee60c12ae8e9c6d58c076b7123a))
13
+ * 支持grid ([ee2b8fb](http://gitlab888.30jia.com.cn/bhBank/zero-code-pro/commit/ee2b8fbff8bbaabd6120d1b91b7c54545c7ae552))
14
+ * 新增tabs ([dcf9d11](http://gitlab888.30jia.com.cn/bhBank/zero-code-pro/commit/dcf9d1152525a3f4a000725029e4fb90ab5be43f))
15
+ * 暂时提交block ([27f9e53](http://gitlab888.30jia.com.cn/bhBank/zero-code-pro/commit/27f9e5304a7a47187109b2c860d82a81f3434d58))
16
+ * 还差数据跳转 ([70b6f24](http://gitlab888.30jia.com.cn/bhBank/zero-code-pro/commit/70b6f248e7b74fdaae87480112e19a4c1eb13f46))
17
+
5
18
  ### [0.3.61](http://gitlab888.30jia.com.cn/bhBank/zero-code-pro/compare/v0.3.60...v0.3.61) (2025-02-22)
6
19
 
7
20
 
@@ -0,0 +1,78 @@
1
+ <template>
2
+ <view
3
+ class="grid"
4
+ :style="{
5
+ 'grid-template-columns': `repeat(${cols}, minmax(0, 1fr))`,
6
+ 'grid-gap': transformValueUnit(gap),
7
+ gap: transformValueUnit(gap),
8
+ margin: `0 ${transformValueUnit(marginHorizontal)}`,
9
+ }"
10
+ >
11
+ <view
12
+ v-for="(item, index) in items"
13
+ :key="index"
14
+ class="flex justify-center items-center overflow-hidden box-border overflow-hidden w-full transition"
15
+ @click="handleClick(index)"
16
+ :style="{
17
+ borderRadius: transformValueUnit(radius),
18
+ padding: `${transformValueUnit(textPV)} ${transformValueUnit(textPH)}`,
19
+ backgroundColor: current === index ? themeColor : textBgColor,
20
+ boxShadow:
21
+ shadowColor && shadowSize
22
+ ? `${shadowColor} 0px ${shadowSize}rpx ${blurSize}rpx 0px `
23
+ : '',
24
+ border: borderColor && current !== index ? `1px solid ${borderColor}` : '',
25
+ backgroundImage: `url(${item.url})`,
26
+ backgroundSize: 'cover',
27
+ backgroundRepeat: 'no-repeat',
28
+ height: transformValueUnit(height),
29
+ 'border-radius': transformValueUnit(radius),
30
+ textAlign,
31
+ color: current === index ? '#fff' : color,
32
+ fontSize: transformValueUnit(fontSize),
33
+ }"
34
+ >
35
+ {{ item.title }}
36
+ </view>
37
+ </view>
38
+ </template>
39
+
40
+ <script setup lang="ts">
41
+ import { LcbFilterGridProps } from './types'
42
+ import { transformValueUnit } from '../../utils/transform'
43
+ import { inject, Ref, ref } from 'vue'
44
+ import { FORM_KEY } from '../../constants'
45
+ defineOptions({
46
+ name: 'LcbFilterGrid',
47
+ options: {
48
+ addGlobalClass: true,
49
+ virtualHost: true,
50
+ styleIsolation: 'shared',
51
+ },
52
+ })
53
+ const themeColor = inject('theme-color', '#3875FF')
54
+ const form = inject<Ref<Record<string, any>>>(FORM_KEY)
55
+ const props = withDefaults(defineProps<LcbFilterGridProps>(), {
56
+ marginHorizontal: 24,
57
+ height: 100,
58
+ cols: 2,
59
+ gap: 16,
60
+ textAlign: 'center',
61
+ imgRadius: 8,
62
+ fontSize: 28,
63
+ })
64
+ const current = ref(-1)
65
+ const handleClick = (index: number) => {
66
+ current.value = index === current.value ? -1 : index
67
+ try {
68
+ const params = JSON.parse(props.items?.[index]?.name)
69
+ form!.value = {
70
+ ...form!.value,
71
+ ...params,
72
+ }
73
+ } catch (error) {
74
+ console.error(error)
75
+ }
76
+ }
77
+ </script>
78
+ <style lang="scss" scoped></style>
@@ -0,0 +1,17 @@
1
+ import { LcbBlockProps } from '../lcb-block/types'
2
+ import { ActionView } from 'action'
3
+ export interface LcbFilterGridProps extends LcbBlockProps {
4
+ items: {
5
+ name: string
6
+ title: string
7
+ url?: string
8
+ }[]
9
+ height?: number
10
+ cols?: number
11
+ gap?: number
12
+ textAlign?: 'left' | 'center' | 'right'
13
+ textBgColor?: string
14
+ textPH?: number
15
+ textPV?: number
16
+ borderColor?: string
17
+ }
@@ -34,7 +34,7 @@
34
34
  <slot name="list" :items="items" v-if="$slots.list" />
35
35
  <template v-else>
36
36
  <lcb-product
37
- v-bind="{ ...$props, ...attrs, form }"
37
+ v-bind="{ ...$props, ...attrs }"
38
38
  :items="items"
39
39
  filterList
40
40
  ref="productRef"
@@ -45,7 +45,7 @@
45
45
  </template>
46
46
  </lcb-product>
47
47
  <lcb-product
48
- v-bind="{ ...$props, ...attrs, form }"
48
+ v-bind="{ ...$props, ...attrs }"
49
49
  filterList
50
50
  :items="items"
51
51
  ref="productRef"
@@ -1,12 +1,18 @@
1
1
  <template>
2
- <view class="titleContainer" v-if="titleMode === 'text'">
3
- <view class="images mr-2" v-if="logoImg">
4
- <img :src="logoImg" />
2
+ <view
3
+ :style="{
4
+ opacity,
5
+ }"
6
+ >
7
+ <view class="titleContainer" v-if="titleMode === 'text'">
8
+ <view class="images mr-2" v-if="logoImg">
9
+ <img :src="logoImg" />
10
+ </view>
11
+ <view class="title">{{ title }}</view>
12
+ </view>
13
+ <view class="images" v-else>
14
+ <img :src="typographyTextBackground" />
5
15
  </view>
6
- <view class="title">{{ title }}</view>
7
- </view>
8
- <view class="images" v-else>
9
- <img :src="typographyTextBackground" />
10
16
  </view>
11
17
  </template>
12
18
 
@@ -67,7 +67,7 @@
67
67
  left
68
68
  v-if="styleGroup === 2 && titleLocation === 'left'"
69
69
  />
70
- <Title v-bind="titleProps" v-else-if="topStyle !== 2" />
70
+ <Title v-bind="titleProps" v-else-if="topStyle !== 2" :opacity="navbarBgOpacity" />
71
71
  </view>
72
72
  </view>
73
73
  <!-- 中间布局 -->
@@ -77,7 +77,11 @@
77
77
  :back="canBack"
78
78
  :link="searchLink"
79
79
  />
80
- <Title v-bind="titleProps" v-else-if="styleGroup === 2 || titleLocation === 'center'" />
80
+ <Title
81
+ v-bind="titleProps"
82
+ v-else-if="styleGroup === 2 || titleLocation === 'center'"
83
+ :opacity="navbarBgOpacity"
84
+ />
81
85
  </view>
82
86
  <view
83
87
  class="navbar-right gap-3"
@@ -15,6 +15,8 @@ export interface NavTitleProps {
15
15
  typographyTextBackground?: string
16
16
  /** 方位 */
17
17
  titleLocation?: 'left' | 'center'
18
+ /** 是否沉浸式 */
19
+ opacity?: number
18
20
  }
19
21
  export interface NavProps extends NavTitleProps {
20
22
  /** 是否固定 */
@@ -1,10 +1,11 @@
1
1
  <script setup lang="ts">
2
- import { ref, useAttrs, watch, watchEffect } from 'vue'
2
+ import { inject, Ref, ref, useAttrs, watch, watchEffect } from 'vue'
3
3
  import UWaterfall from 'uview-plus/components/u-waterfall/u-waterfall.vue'
4
4
  import { LcbProductProps } from './types'
5
5
  import { transformValueUnit } from '../../utils/transform'
6
6
  import { calculateImageHeight } from '../../utils/utils'
7
7
  import { isH5 } from '@tplc/wot/components/common/util'
8
+ import { FORM_KEY } from '../../constants'
8
9
 
9
10
  const uWaterfallRef = ref()
10
11
  defineOptions({
@@ -25,8 +26,10 @@ const props = withDefaults(defineProps<LcbProductProps>(), {
25
26
  column: 2,
26
27
  paddingHorizontal: 24,
27
28
  paddingVertical: 24,
29
+ sourceMode: 1,
28
30
  })
29
31
  const renderList = ref<Record<string, any>[]>([])
32
+ const form = inject<Ref<Record<string, any>>>(FORM_KEY)
30
33
  const screenWidth = isH5 ? window.innerWidth : uni.getWindowInfo().screenWidth
31
34
  watchEffect(() => {
32
35
  if (!props.filterList) return
@@ -35,27 +38,34 @@ watchEffect(() => {
35
38
  defineSlots<{
36
39
  item(props: { item: any }): any
37
40
  }>()
38
- watch(
39
- () => props.form,
40
- () => {
41
- if (props.listType === 'waterfall') {
42
- renderList.value = []
43
- uWaterfallRef.value?.clear?.()
44
- }
45
- },
46
- { deep: true },
47
- )
48
41
  const getData = async () => {
42
+ /** 如果是list里面嵌套就不处理 */
49
43
  if (props.filterList) return
50
- if (props.items?.length) {
51
- if (props.listType === 'waterfall') {
52
- renderList.value = []
53
- uWaterfallRef.value?.clear?.()
54
- }
44
+ if (props.listType === 'waterfall') {
45
+ renderList.value = []
46
+ uWaterfallRef.value?.clear?.()
47
+ }
48
+ let requestParams = {}
49
+ try {
50
+ requestParams = JSON.parse(props.requestParams ?? '{}')
51
+ } catch (error) {
52
+ console.error(error)
53
+ }
54
+ /** 如果是列表模式 */
55
+ if (props.items?.length && props.sourceMode === 1) {
55
56
  const { data } = await uni.$lcb.http.post('/productInfo/filteredPage', {
56
57
  productIdList: props.items.map((item) => item.productId),
57
58
  productType: props.items[0].productType,
58
59
  listType: props.listType,
60
+ ...requestParams,
61
+ })
62
+ renderList.value = data as Record<string, any>[]
63
+ /** 如果是请求模式 */
64
+ } else if (props.requestUrl && props.sourceMode === 2) {
65
+ const { data } = await uni.$lcb.http.post(props.requestUrl, {
66
+ listType: props.listType,
67
+ ...requestParams,
68
+ ...form!.value,
59
69
  })
60
70
  renderList.value = data as Record<string, any>[]
61
71
  } else {
@@ -63,10 +73,43 @@ const getData = async () => {
63
73
  uWaterfallRef.value?.clear?.()
64
74
  }
65
75
  }
76
+ watch(
77
+ () => form!.value,
78
+ () => {
79
+ if (props.listType === 'waterfall') {
80
+ renderList.value = []
81
+ uWaterfallRef.value?.clear?.()
82
+ }
83
+ /** 如果是请求模式 */
84
+ if (props.sourceMode === 2) {
85
+ getData()
86
+ }
87
+ },
88
+ { deep: true },
89
+ )
90
+ watch(
91
+ () => props.requestUrl,
92
+ () => {
93
+ /** 如果是请求模式 */
94
+ if (props.sourceMode === 2) {
95
+ getData()
96
+ }
97
+ },
98
+ {
99
+ immediate: true,
100
+ },
101
+ )
102
+ watch(
103
+ () => props.requestParams,
104
+ () => {
105
+ getData()
106
+ },
107
+ )
66
108
 
67
109
  watch(
68
110
  () => props.items,
69
111
  (newValue, oldValue) => {
112
+ if (props.sourceMode === 2) return
70
113
  if (
71
114
  newValue?.map((item) => item.productId).join(',') !==
72
115
  oldValue?.map((item) => item.productId).join(',')
@@ -16,7 +16,9 @@ export interface LcbProductProps extends LcbBlockProps {
16
16
  productId: string
17
17
  [key: string]: any
18
18
  }[]
19
- form?: Record<string, any>
19
+ sourceMode?: 1 | 2 // 数据源模式 1 列表 2 请求
20
+ requestUrl?: string
21
+ requestParams?: string
20
22
  layoutType?: 'vertical' | 'horizontal' // 布局方式
21
23
  titleLineClamp?: number
22
24
  coverImgStyle?: Record<string, any>
@@ -167,7 +167,7 @@ const value = computed(() => {
167
167
 
168
168
  <slot :value="value" v-if="prop === 'scoreAvg'" name="scoreAvg">
169
169
  <view :class="`px-1.5 rounded bg-primary text-3 text-white ${className}`" :style="style">
170
- {{ value }}
170
+ {{ value.toFixed(1) }}
171
171
  </view>
172
172
  </slot>
173
173
 
@@ -0,0 +1,38 @@
1
+ <template>
2
+ <view class="w-100vw">
3
+ <lcb-block v-bind="$props">
4
+ <wd-tabs custom-class="!bg-transparent" @change="handleChange">
5
+ <wd-tab v-for="tab in items" :key="tab.name" :title="tab.title" :name="tab.name" />
6
+ </wd-tabs>
7
+ </lcb-block>
8
+ </view>
9
+ </template>
10
+
11
+ <script setup lang="ts">
12
+ import { FORM_KEY } from '../../../../constants'
13
+ import { inject, Ref, watch } from 'vue'
14
+ import { LcbTabsProps } from '../../types'
15
+ defineOptions({
16
+ name: 'LcbTabsItem',
17
+ options: {
18
+ addGlobalClass: true,
19
+ virtualHost: true,
20
+ styleIsolation: 'shared',
21
+ },
22
+ })
23
+ const form = inject<Ref<Record<string, any>>>(FORM_KEY)
24
+ withDefaults(defineProps<LcbTabsProps>(), {})
25
+ const handleChange = (e: { name: string }) => {
26
+ try {
27
+ const params = JSON.parse(e.name)
28
+ form!.value = {
29
+ ...form!.value,
30
+ ...params,
31
+ }
32
+ } catch (error) {
33
+ console.error(error)
34
+ }
35
+ }
36
+ </script>
37
+
38
+ <style lang="scss" scoped></style>
@@ -0,0 +1,22 @@
1
+ <template>
2
+ <wd-sticky v-if="sticky">
3
+ <Tabs v-bind="$props" />
4
+ </wd-sticky>
5
+ <Tabs v-else v-bind="$props" />
6
+ </template>
7
+
8
+ <script setup lang="ts">
9
+ import { LcbTabsProps } from './types'
10
+ import Tabs from './components/Tabs/index.vue'
11
+ defineOptions({
12
+ name: 'LcbTabs',
13
+ options: {
14
+ addGlobalClass: true,
15
+ virtualHost: true,
16
+ styleIsolation: 'shared',
17
+ },
18
+ })
19
+ withDefaults(defineProps<LcbTabsProps>(), {})
20
+ </script>
21
+
22
+ <style lang="scss" scoped></style>
@@ -0,0 +1,10 @@
1
+ import { LcbBlockProps } from '../../components/lcb-block/types'
2
+
3
+ export interface LcbTabsProps extends LcbBlockProps {
4
+ /** 是否吸顶 */
5
+ sticky?: boolean
6
+ items: {
7
+ title: string
8
+ name: string
9
+ }[]
10
+ }
package/global.d.ts CHANGED
@@ -14,6 +14,7 @@ declare module 'vue' {
14
14
  'lcb-city-select': (typeof import('@tplc/business/components/lcb-city-select/lcb-city-select.vue'))['default']
15
15
  'lcb-dynamic-data': (typeof import('@tplc/business/components/lcb-dynamic-data/lcb-dynamic-data.vue'))['default']
16
16
  'lcb-fab': (typeof import('@tplc/business/components/lcb-fab/lcb-fab.vue'))['default']
17
+ 'lcb-filter-grid': (typeof import('@tplc/business/components/lcb-filter-grid/lcb-filter-grid.vue'))['default']
17
18
  'lcb-gap': (typeof import('@tplc/business/components/lcb-gap/lcb-gap.vue'))['default']
18
19
  'lcb-grid': (typeof import('@tplc/business/components/lcb-grid/lcb-grid.vue'))['default']
19
20
  'lcb-home-search': (typeof import('@tplc/business/components/lcb-home-search/lcb-home-search.vue'))['default']
@@ -29,6 +30,7 @@ declare module 'vue' {
29
30
  'lcb-product-item': (typeof import('@tplc/business/components/lcb-product-item/lcb-product-item.vue'))['default']
30
31
  'lcb-rich-text': (typeof import('@tplc/business/components/lcb-rich-text/lcb-rich-text.vue'))['default']
31
32
  'lcb-swiper': (typeof import('@tplc/business/components/lcb-swiper/lcb-swiper.vue'))['default']
33
+ 'lcb-tabs': (typeof import('@tplc/business/components/lcb-tabs/lcb-tabs.vue'))['default']
32
34
  'lcb-tags': (typeof import('@tplc/business/components/lcb-tags/lcb-tags.vue'))['default']
33
35
  'lcb-text': (typeof import('@tplc/business/components/lcb-text/lcb-text.vue'))['default']
34
36
  'lcb-title': (typeof import('@tplc/business/components/lcb-title/lcb-title.vue'))['default']
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tplc/business",
3
- "version": "0.3.61",
3
+ "version": "0.3.62",
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.61"
14
+ "@tplc/wot": "0.1.62"
15
15
  },
16
16
  "engines": {
17
17
  "node": ">=18",
@@ -0,0 +1,73 @@
1
+ import { LcbFilterGridProps } from './types'
2
+ declare const _default: import('vue').DefineComponent<
3
+ __VLS_WithDefaults<
4
+ __VLS_TypePropsToOption<LcbFilterGridProps>,
5
+ {
6
+ marginHorizontal: number
7
+ height: number
8
+ cols: number
9
+ gap: number
10
+ textAlign: string
11
+ imgRadius: number
12
+ fontSize: number
13
+ }
14
+ >,
15
+ {},
16
+ unknown,
17
+ {},
18
+ {},
19
+ import('vue').ComponentOptionsMixin,
20
+ import('vue').ComponentOptionsMixin,
21
+ {},
22
+ string,
23
+ import('vue').PublicProps,
24
+ Readonly<
25
+ import('vue').ExtractPropTypes<
26
+ __VLS_WithDefaults<
27
+ __VLS_TypePropsToOption<LcbFilterGridProps>,
28
+ {
29
+ marginHorizontal: number
30
+ height: number
31
+ cols: number
32
+ gap: number
33
+ textAlign: string
34
+ imgRadius: number
35
+ fontSize: number
36
+ }
37
+ >
38
+ >
39
+ >,
40
+ {
41
+ height: number
42
+ marginHorizontal: number
43
+ fontSize: number
44
+ textAlign: 'left' | 'center' | 'right'
45
+ cols: number
46
+ gap: number
47
+ },
48
+ {}
49
+ >
50
+ export default _default
51
+ type __VLS_WithDefaults<P, D> = {
52
+ [K in keyof Pick<P, keyof P>]: K extends keyof D
53
+ ? __VLS_Prettify<
54
+ P[K] & {
55
+ default: D[K]
56
+ }
57
+ >
58
+ : P[K]
59
+ }
60
+ type __VLS_Prettify<T> = {
61
+ [K in keyof T]: T[K]
62
+ } & {}
63
+ type __VLS_NonUndefinedable<T> = T extends undefined ? never : T
64
+ type __VLS_TypePropsToOption<T> = {
65
+ [K in keyof T]-?: {} extends Pick<T, K>
66
+ ? {
67
+ type: import('vue').PropType<__VLS_NonUndefinedable<T[K]>>
68
+ }
69
+ : {
70
+ type: import('vue').PropType<T[K]>
71
+ required: true
72
+ }
73
+ }
@@ -0,0 +1,16 @@
1
+ import { LcbBlockProps } from '../lcb-block/types'
2
+ export interface LcbFilterGridProps extends LcbBlockProps {
3
+ items: {
4
+ name: string
5
+ title: string
6
+ url?: string
7
+ }[]
8
+ height?: number
9
+ cols?: number
10
+ gap?: number
11
+ textAlign?: 'left' | 'center' | 'right'
12
+ textBgColor?: string
13
+ textPH?: number
14
+ textPV?: number
15
+ borderColor?: string
16
+ }
@@ -48,12 +48,12 @@ declare const __VLS_component: import('vue').DefineComponent<
48
48
  textAlign: 'left' | 'center' | 'right'
49
49
  imageWidth: number
50
50
  borderRadius: number
51
+ border: boolean
51
52
  imageHeight: number
52
53
  listType: 'list' | 'horizontal' | 'grid' | 'waterfall'
53
54
  pageFilterType: string
54
55
  pageListProps: import('./components/FilterList/type').PageListProps
55
56
  styleMode: 'default' | 'plain'
56
- border: boolean
57
57
  titleLineClamp: number
58
58
  isSticky: boolean
59
59
  layoutType: 'vertical' | 'horizontal'
@@ -13,6 +13,8 @@ export interface NavTitleProps {
13
13
  typographyTextBackground?: string
14
14
  /** 方位 */
15
15
  titleLocation?: 'left' | 'center'
16
+ /** 是否沉浸式 */
17
+ opacity?: number
16
18
  }
17
19
  export interface NavProps extends NavTitleProps {
18
20
  /** 是否固定 */
@@ -15,6 +15,7 @@ declare const __VLS_component: import('vue').DefineComponent<
15
15
  column: number
16
16
  paddingHorizontal: number
17
17
  paddingVertical: number
18
+ sourceMode: number
18
19
  }
19
20
  >,
20
21
  {
@@ -40,6 +41,7 @@ declare const __VLS_component: import('vue').DefineComponent<
40
41
  column: number
41
42
  paddingHorizontal: number
42
43
  paddingVertical: number
44
+ sourceMode: number
43
45
  }
44
46
  >
45
47
  >
@@ -52,6 +54,7 @@ declare const __VLS_component: import('vue').DefineComponent<
52
54
  column: number
53
55
  listType: 'list' | 'horizontal' | 'grid' | 'waterfall'
54
56
  titleLineClamp: number
57
+ sourceMode: 1 | 2
55
58
  },
56
59
  {}
57
60
  >
@@ -14,7 +14,9 @@ export interface LcbProductProps extends LcbBlockProps {
14
14
  productId: string
15
15
  [key: string]: any
16
16
  }[]
17
- form?: Record<string, any>
17
+ sourceMode?: 1 | 2
18
+ requestUrl?: string
19
+ requestParams?: string
18
20
  layoutType?: 'vertical' | 'horizontal'
19
21
  titleLineClamp?: number
20
22
  coverImgStyle?: Record<string, any>
@@ -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
+ }
@@ -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
+ }
@@ -0,0 +1,9 @@
1
+ import { LcbBlockProps } from '../../components/lcb-block/types'
2
+ export interface LcbTabsProps extends LcbBlockProps {
3
+ /** 是否吸顶 */
4
+ sticky?: boolean
5
+ items: {
6
+ title: string
7
+ name: string
8
+ }[]
9
+ }