@opendesign-plus-test/components 0.0.1-rc.56 → 0.0.1-rc.57
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/dist/chunk-OElCookieNotice.cjs.js +1 -1
- package/dist/chunk-OElCookieNotice.es.js +72 -69
- package/dist/components/OHeaderSearch.vue.d.ts +22 -22
- package/dist/components/OHeaderUser.vue.d.ts +1 -1
- package/dist/components/OLanguageSwitcher.vue.d.ts +49 -0
- package/dist/components/OThemeSwitcher.vue.d.ts +1 -1
- package/dist/components/activity/OActivityMyCalendar.vue.d.ts +4 -4
- package/dist/components/activity/index.d.ts +2 -2
- package/dist/components/banner/OBanner.vue.d.ts +13 -0
- package/dist/components/banner/OBannerContent.vue.d.ts +7 -0
- package/dist/components/banner/index.d.ts +68 -0
- package/dist/components/banner/types.d.ts +31 -0
- package/dist/components/meeting/OMeetingCalendar.vue.d.ts +2 -2
- package/dist/components/meeting/OMeetingMyCalendar.vue.d.ts +4 -4
- package/dist/components/meeting/components/OMeetingCalendarSelector.vue.d.ts +1 -1
- package/dist/components/meeting/index.d.ts +3 -3
- package/dist/components/search/OSearchInput.vue.d.ts +22 -22
- package/dist/components/search/index.d.ts +11 -11
- package/dist/components/search/internal/SearchImageInput.vue.d.ts +17 -17
- package/dist/components.cjs.js +36 -36
- package/dist/components.css +1 -1
- package/dist/components.es.js +6702 -6526
- package/dist/index.d.ts +3 -2
- package/package.json +1 -1
- package/scripts/generate-components-index.js +1 -1
- package/src/components/OLanguageSwitcher.vue +211 -0
- package/src/components/OPlusConfigProvider.vue +2 -2
- package/src/components/banner/OBanner.vue +288 -0
- package/src/components/banner/OBannerContent.vue +175 -0
- package/src/components/banner/index.ts +18 -0
- package/src/components/banner/types.ts +39 -0
- package/src/components/header/OHeader.vue +1 -1
- package/src/components/meeting/OMeetingCalendar.vue +4 -4
- package/src/components/meeting/OMeetingForm.vue +10 -2
- package/src/components/meeting/components/OMeetingCalendarList.vue +2 -2
- package/src/components/meeting/components/OMeetingDetail.vue +17 -3
- package/src/i18n/en.ts +4 -2
- package/src/i18n/zh.ts +4 -3
- package/src/index.ts +4 -3
- package/dist/components/OBanner.vue.d.ts +0 -11
- package/src/components/OBanner.vue +0 -398
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { OButton, OFigure } from '@opensig/opendesign';
|
|
3
|
+
import ContentWrapper from '../common/ContentWrapper.vue';
|
|
4
|
+
import type { BannerContentProps } from './types';
|
|
5
|
+
|
|
6
|
+
defineProps<BannerContentProps>();
|
|
7
|
+
|
|
8
|
+
// 内联定义 emits 类型
|
|
9
|
+
const emit = defineEmits<{
|
|
10
|
+
(e: 'click', href: string | undefined): void;
|
|
11
|
+
}>();
|
|
12
|
+
|
|
13
|
+
const onClick = (href: string | undefined, hasBtn: string | undefined) => {
|
|
14
|
+
if (href && !hasBtn) {
|
|
15
|
+
window.open(href);
|
|
16
|
+
emit('click', href);
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
</script>
|
|
20
|
+
|
|
21
|
+
<template>
|
|
22
|
+
<OFigure
|
|
23
|
+
class="banner-bg"
|
|
24
|
+
:src="info.bg"
|
|
25
|
+
:class="{
|
|
26
|
+
'with-sticky-bg': info.withStickyBg,
|
|
27
|
+
'cursor-pointer': info.href && !info.btn,
|
|
28
|
+
}"
|
|
29
|
+
:style="{
|
|
30
|
+
'--pad-offset': info.pad_offset,
|
|
31
|
+
}"
|
|
32
|
+
@click="onClick(info.href, info.btn)"
|
|
33
|
+
>
|
|
34
|
+
<ContentWrapper class="banner-wrapper" :class="['banner-wrapper', contentJustifyCenter ? 'content-center' : '']">
|
|
35
|
+
<div class="banner-content">
|
|
36
|
+
<img v-if="!isPhone && info.attach" :src="info.attach" class="banner-attach" />
|
|
37
|
+
|
|
38
|
+
<!-- 标题 -->
|
|
39
|
+
<div
|
|
40
|
+
:class="{
|
|
41
|
+
'banner-title': true,
|
|
42
|
+
'text-dark': info.text_theme === 'dark'
|
|
43
|
+
}"
|
|
44
|
+
v-if="info.title"
|
|
45
|
+
>
|
|
46
|
+
{{ info.title }}
|
|
47
|
+
</div>
|
|
48
|
+
<!-- 副标题 -->
|
|
49
|
+
<div
|
|
50
|
+
:class="{
|
|
51
|
+
'banner-subtitle': true,
|
|
52
|
+
'text-dark': info.text_theme === 'dark'
|
|
53
|
+
}"
|
|
54
|
+
v-if="info.subtitle"
|
|
55
|
+
>
|
|
56
|
+
{{ info.subtitle }}
|
|
57
|
+
</div>
|
|
58
|
+
<div
|
|
59
|
+
class="banner-text"
|
|
60
|
+
v-if="info.bg_text"
|
|
61
|
+
:style="{
|
|
62
|
+
backgroundImage: `url(${info.bg_text})`,
|
|
63
|
+
'--pc-width': info.pc_text_width,
|
|
64
|
+
'--pc-height': info.pc_text_height,
|
|
65
|
+
'--pad-width': info.pad_text_width,
|
|
66
|
+
'--pad-height': info.pad_text_height,
|
|
67
|
+
}"
|
|
68
|
+
></div>
|
|
69
|
+
<!-- 操作按钮 -->
|
|
70
|
+
<div v-if="info.btn" class="banner-opts">
|
|
71
|
+
<OButton
|
|
72
|
+
:href="info.href"
|
|
73
|
+
target="_blank"
|
|
74
|
+
variant="solid"
|
|
75
|
+
color="primary"
|
|
76
|
+
:size="size === 'tiny' ? undefined : size"
|
|
77
|
+
>
|
|
78
|
+
{{ info.btn }}
|
|
79
|
+
</OButton>
|
|
80
|
+
</div>
|
|
81
|
+
</div>
|
|
82
|
+
</ContentWrapper>
|
|
83
|
+
</OFigure>
|
|
84
|
+
</template>
|
|
85
|
+
|
|
86
|
+
<style lang="scss" scoped>
|
|
87
|
+
.banner-bg {
|
|
88
|
+
width: 100%;
|
|
89
|
+
height: 100%;
|
|
90
|
+
|
|
91
|
+
:deep(.o-figure-img) {
|
|
92
|
+
width: 100%;
|
|
93
|
+
height: 100%;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
@include respond-to('pad') {
|
|
97
|
+
:deep(.o-figure-img) {
|
|
98
|
+
transition: object-position 0.3s ease;
|
|
99
|
+
object-position: var(--pad-offset);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
@include respond-to('phone') {
|
|
104
|
+
--figure-radius: 4px;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
.banner-wrapper {
|
|
109
|
+
height: 100%;
|
|
110
|
+
|
|
111
|
+
&.content-center {
|
|
112
|
+
display: flex;
|
|
113
|
+
justify-content: center;
|
|
114
|
+
|
|
115
|
+
& .banner-content {
|
|
116
|
+
align-items: center;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
.banner-content {
|
|
122
|
+
height: 100%;
|
|
123
|
+
display: inline-flex;
|
|
124
|
+
flex-direction: column;
|
|
125
|
+
justify-content: center;
|
|
126
|
+
position: relative;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
.banner-title {
|
|
130
|
+
@include display1;
|
|
131
|
+
color: var(--o-color-info1);
|
|
132
|
+
font-weight: 500;
|
|
133
|
+
margin-bottom: 8px;
|
|
134
|
+
|
|
135
|
+
&.text-dark {
|
|
136
|
+
color: var(--o-color-info1-inverse);
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
@include respond-to('<=pad_v') {
|
|
140
|
+
font-size: 22px;
|
|
141
|
+
line-height: 30px;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
.banner-subtitle {
|
|
146
|
+
color: var(--o-color-info1);
|
|
147
|
+
margin-top: 8px;
|
|
148
|
+
font-size: 16px;
|
|
149
|
+
|
|
150
|
+
&.text-dark {
|
|
151
|
+
color: var(--o-color-info1-inverse);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
.banner-text {
|
|
156
|
+
height: var(--pc-height);
|
|
157
|
+
width: var(--pc-width);
|
|
158
|
+
background-size: contain;
|
|
159
|
+
background-repeat: no-repeat;
|
|
160
|
+
|
|
161
|
+
@include respond-to('pad') {
|
|
162
|
+
height: var(--pad-height);
|
|
163
|
+
width: var(--pad-width);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
.banner-opts {
|
|
168
|
+
margin-top: 24px;
|
|
169
|
+
--d: 20px;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
.cursor-pointer {
|
|
173
|
+
cursor: pointer;
|
|
174
|
+
}
|
|
175
|
+
</style>
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import _OBanner from './OBanner.vue';
|
|
2
|
+
import _OBannerContent from './OBannerContent.vue';
|
|
3
|
+
import type { App } from 'vue';
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
const OBanner = Object.assign(_OBanner, {
|
|
7
|
+
install(app: App) {
|
|
8
|
+
app.component('OBanner', _OBanner);
|
|
9
|
+
},
|
|
10
|
+
});
|
|
11
|
+
const OBannerContent = Object.assign(_OBannerContent, {
|
|
12
|
+
install(app: App) {
|
|
13
|
+
app.component('OBannerContent', _OBannerContent);
|
|
14
|
+
},
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
export { OBanner, OBannerContent };
|
|
18
|
+
export * from './types';
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
// Banner 项的类型定义
|
|
2
|
+
export interface BannerItem {
|
|
3
|
+
title?: string;
|
|
4
|
+
subtitle?: string;
|
|
5
|
+
bg: string;
|
|
6
|
+
text_theme?: 'light' | 'dark';
|
|
7
|
+
bg_text?: string;
|
|
8
|
+
pc_text_width?: string;
|
|
9
|
+
pc_text_height?: string;
|
|
10
|
+
pad_text_width?: string;
|
|
11
|
+
pad_text_height?: string;
|
|
12
|
+
attach?: string;
|
|
13
|
+
href?: string;
|
|
14
|
+
btn?: string;
|
|
15
|
+
withStickyBg?: boolean;
|
|
16
|
+
pad_offset?: string;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
// BannerContent 组件的 Props 类型
|
|
20
|
+
export interface BannerContentProps {
|
|
21
|
+
info: BannerItem;
|
|
22
|
+
size?: 'large' | 'medium' | 'small' | 'tiny';
|
|
23
|
+
contentJustifyCenter?: boolean;
|
|
24
|
+
isPhone?: boolean;
|
|
25
|
+
isLight?: boolean;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
// Emits 事件类型
|
|
29
|
+
export interface HomeBannerEmits {
|
|
30
|
+
(e: 'before-change', index: number): void;
|
|
31
|
+
(e: 'click', href: string | undefined): void;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export interface BannerContentEmits {
|
|
35
|
+
(e: 'click', href: string | undefined): void;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
// 组件尺寸类型
|
|
39
|
+
export type ComponentSize = 'large' | 'medium' | 'small' | 'tiny';
|
|
@@ -82,8 +82,8 @@ const getSummitData = async (date: string) => {
|
|
|
82
82
|
return {
|
|
83
83
|
...v,
|
|
84
84
|
type: CalendarDataType.SUMMIT,
|
|
85
|
-
start_date_time: `${ formatDate(v.start_date) } ${ v.start }`,
|
|
86
|
-
end_date_time: `${ formatDate(v.end_date) } ${ v.end }`,
|
|
85
|
+
start_date_time: `${ formatDate(v.start_date) } ${ v.start || '' }`,
|
|
86
|
+
end_date_time: `${ formatDate(v.end_date) } ${ v.end || '' }`,
|
|
87
87
|
};
|
|
88
88
|
});
|
|
89
89
|
} else {
|
|
@@ -97,8 +97,8 @@ const getActivityData = async (date: string) => {
|
|
|
97
97
|
return {
|
|
98
98
|
...v,
|
|
99
99
|
type: CalendarDataType.EVENTS,
|
|
100
|
-
start_date_time: `${ formatDate(v.start_date) } ${ v.start }`,
|
|
101
|
-
end_date_time: `${ formatDate(v.end_date) } ${ v.end }`,
|
|
100
|
+
start_date_time: `${ formatDate(v.start_date) } ${ v.start || '' }`,
|
|
101
|
+
end_date_time: `${ formatDate(v.end_date) } ${ v.end || '' }`,
|
|
102
102
|
};
|
|
103
103
|
});
|
|
104
104
|
} else {
|
|
@@ -689,7 +689,11 @@ defineExpose({
|
|
|
689
689
|
<OIcon>
|
|
690
690
|
<IconTip />
|
|
691
691
|
</OIcon>
|
|
692
|
-
<
|
|
692
|
+
<div>
|
|
693
|
+
<span>{{ t('meeting.meetingRecordDesc1') }}</span>
|
|
694
|
+
<br>
|
|
695
|
+
<span>{{ t('meeting.meetingRecordDesc2') }}</span>
|
|
696
|
+
</div>
|
|
693
697
|
</div>
|
|
694
698
|
</div>
|
|
695
699
|
</template>
|
|
@@ -701,7 +705,11 @@ defineExpose({
|
|
|
701
705
|
<OIcon>
|
|
702
706
|
<IconTip />
|
|
703
707
|
</OIcon>
|
|
704
|
-
<
|
|
708
|
+
<div>
|
|
709
|
+
<span>{{ t('meeting.meetingRecordDesc1') }}</span>
|
|
710
|
+
<br>
|
|
711
|
+
<span>{{ t('meeting.meetingRecordDesc2') }}</span>
|
|
712
|
+
</div>
|
|
705
713
|
</div>
|
|
706
714
|
</div>
|
|
707
715
|
</template>
|
|
@@ -90,7 +90,7 @@ const computedList = computed<any[]>(() => {
|
|
|
90
90
|
dateRange = `${ formatDate(v.start_date) } ${ v.start }-${ formatDate(v.end_date) } ${ v.end }`;
|
|
91
91
|
}
|
|
92
92
|
} else {
|
|
93
|
-
dateRange = `${ formatDate(v.start_date, 'YYYY/MM/DD
|
|
93
|
+
dateRange = `${ formatDate(v.start_date, 'YYYY/MM/DD') } ${ formatDate(v.end_date, 'YYYY/MM/DD') }`;
|
|
94
94
|
}
|
|
95
95
|
|
|
96
96
|
return {
|
|
@@ -169,7 +169,7 @@ const computedList = computed<any[]>(() => {
|
|
|
169
169
|
<OCollapseItem v-for="(item, index) in computedList" :key="item.id" :value="item.id">
|
|
170
170
|
<template #title>
|
|
171
171
|
<div class="meet-title-left">
|
|
172
|
-
<div class="meet-title" :title="item.topic || item.name">
|
|
172
|
+
<div class="meet-title" :title="item.topic || item.name || item.title">
|
|
173
173
|
<OIcon
|
|
174
174
|
:style="{
|
|
175
175
|
backgroundColor: `${getConfig(item.type, 'color')}`
|
|
@@ -5,6 +5,7 @@ import { CalendarDataType, MeetingItemT } from '../types.ts';
|
|
|
5
5
|
import MoreText from '@/components/common/MoreText.vue';
|
|
6
6
|
import { formatDate } from '@/components/meeting/utils.ts';
|
|
7
7
|
import { useMeetingConfig } from '../composables/useMeetingConfig';
|
|
8
|
+
import { useI18n } from '@/i18n';
|
|
8
9
|
|
|
9
10
|
const props = defineProps<{
|
|
10
11
|
data: MeetingItemT;
|
|
@@ -13,7 +14,8 @@ const props = defineProps<{
|
|
|
13
14
|
page?: CalendarDataType
|
|
14
15
|
}>();
|
|
15
16
|
const { t, getPlatformLabel } = useMeetingConfig();
|
|
16
|
-
|
|
17
|
+
const { locale } = useI18n();
|
|
18
|
+
const isZh = computed(() => locale.value === 'zh');
|
|
17
19
|
// 会议详情配置
|
|
18
20
|
const infoList = computed(() =>
|
|
19
21
|
[
|
|
@@ -83,11 +85,15 @@ const columns = computed<ColumnItemT[]>(() => {
|
|
|
83
85
|
});
|
|
84
86
|
|
|
85
87
|
const domRef = ref([]);
|
|
88
|
+
const SPLIT_MARK = '|';
|
|
86
89
|
// 复制会议内容
|
|
87
90
|
const copyInfo = () => {
|
|
88
91
|
try {
|
|
89
|
-
|
|
90
|
-
text
|
|
92
|
+
const colon = isZh.value ? ':' : ': ';
|
|
93
|
+
let text = `${ t('meeting.meetingTopic') }${ colon }${ props.data.topic || props.data.name || props.data.title }\n`;
|
|
94
|
+
text += [...domRef.value].reduce((pre, cur: HTMLDivElement) => {
|
|
95
|
+
return `${ pre }${ cur.textContent ? cur.textContent.replace(SPLIT_MARK, colon) : '' }\n`;
|
|
96
|
+
}, '');
|
|
91
97
|
navigator.clipboard.writeText(text);
|
|
92
98
|
return Promise.resolve();
|
|
93
99
|
} catch (e) {
|
|
@@ -114,6 +120,7 @@ defineExpose({ copyInfo });
|
|
|
114
120
|
>
|
|
115
121
|
<template v-if="getField(info.key) && !info.isRecord">
|
|
116
122
|
<span class="label">{{ info.label }}</span>
|
|
123
|
+
<span class="split-mark">{{ SPLIT_MARK }}</span>
|
|
117
124
|
<MoreText :show="show" v-if="info.ellipsis" :text="getField(info.key) || '-'" />
|
|
118
125
|
<OLink
|
|
119
126
|
v-else-if="info.isLink"
|
|
@@ -190,6 +197,13 @@ defineExpose({ copyInfo });
|
|
|
190
197
|
}
|
|
191
198
|
}
|
|
192
199
|
|
|
200
|
+
.split-mark {
|
|
201
|
+
width: 0;
|
|
202
|
+
height: 0;
|
|
203
|
+
opacity: 0;
|
|
204
|
+
overflow: hidden;
|
|
205
|
+
}
|
|
206
|
+
|
|
193
207
|
&.type_events {
|
|
194
208
|
.label {
|
|
195
209
|
width: 6em;
|
package/src/i18n/en.ts
CHANGED
|
@@ -115,8 +115,10 @@ export default {
|
|
|
115
115
|
'meeting.meetingDate': 'Date',
|
|
116
116
|
'meeting.startTime': 'Start time',
|
|
117
117
|
'meeting.endTime': 'End time',
|
|
118
|
-
'meeting.meetingRecord': 'Recording',
|
|
118
|
+
'meeting.meetingRecord': 'AI Recording',
|
|
119
119
|
'meeting.meetingRecordDesc': 'Enables auto screen recording. This service is provided by {0} Meeting. AI-powered playback will be automatically uploaded within one working day.',
|
|
120
|
+
'meeting.meetingRecordDesc1': '1. Meeting AI recording is now enabled. Turning on Meeting AI Listen automatically activates cloud recording as well. After the meeting, you can replay the recording, and voice-to-text transcripts along with AI meeting minutes will be automatically generated.',
|
|
121
|
+
'meeting.meetingRecordDesc2': '2. The AI-generated meeting replay link will be automatically generated and uploaded within 1 business day.',
|
|
120
122
|
'meeting.day0': 'day(s)',
|
|
121
123
|
'meeting.week0': 'week(s)',
|
|
122
124
|
'meeting.month0': 'month(s)',
|
|
@@ -144,7 +146,7 @@ export default {
|
|
|
144
146
|
'meeting.groups': 'Groups',
|
|
145
147
|
'meeting.activityAddress': 'Address',
|
|
146
148
|
'meeting.livePlatform': 'Live Platform',
|
|
147
|
-
'meeting.meetingTopic': 'Topics
|
|
149
|
+
'meeting.meetingTopic': 'Topics',
|
|
148
150
|
'meeting.meetingDetail': 'Details',
|
|
149
151
|
'meeting.meetingEtherpad': 'Etherpad',
|
|
150
152
|
'meeting.meetingReplay': 'Playback',
|
package/src/i18n/zh.ts
CHANGED
|
@@ -115,8 +115,9 @@ export default {
|
|
|
115
115
|
'meeting.meetingDate': '会议日期',
|
|
116
116
|
'meeting.startTime': '开始时间',
|
|
117
117
|
'meeting.endTime': '结束时间',
|
|
118
|
-
'meeting.meetingRecord': '
|
|
119
|
-
'meeting.
|
|
118
|
+
'meeting.meetingRecord': '会议AI录制',
|
|
119
|
+
'meeting.meetingRecordDesc1': '1、会议AI录制已开启,开启会议AI听即开启云录制,会后可回放会议录制并生成语音文字和AI纪要。',
|
|
120
|
+
'meeting.meetingRecordDesc2': '2、AI生成的会议回放链接将在 1 个工作日内自动生成并上传。',
|
|
120
121
|
'meeting.day0': '天',
|
|
121
122
|
'meeting.week0': '周',
|
|
122
123
|
'meeting.month0': '月',
|
|
@@ -144,7 +145,7 @@ export default {
|
|
|
144
145
|
'meeting.groups': '工作组',
|
|
145
146
|
'meeting.activityAddress': '活动地点',
|
|
146
147
|
'meeting.livePlatform': '直播平台',
|
|
147
|
-
'meeting.meetingTopic': '
|
|
148
|
+
'meeting.meetingTopic': '会议主题',
|
|
148
149
|
'meeting.meetingDetail': '会议详情',
|
|
149
150
|
'meeting.meetingEtherpad': '会议纪要',
|
|
150
151
|
'meeting.meetingReplay': '智能回放',
|
package/src/index.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
// OpenDesignPlus Components 库入口文件
|
|
2
2
|
// 此文件由 scripts/generate-components-index.js 自动生成
|
|
3
3
|
|
|
4
|
-
import OBanner from './components/OBanner.vue';
|
|
5
4
|
import OCookieNotice from './components/OCookieNotice.vue';
|
|
6
5
|
import OFooter from './components/OFooter.vue';
|
|
7
6
|
import OHeaderSearch from './components/OHeaderSearch.vue';
|
|
8
7
|
import OHeaderUser from './components/OHeaderUser.vue';
|
|
8
|
+
import OLanguageSwitcher from './components/OLanguageSwitcher.vue';
|
|
9
9
|
import OPlusConfigProvider from './components/OPlusConfigProvider.vue';
|
|
10
10
|
import OSection from './components/OSection.vue';
|
|
11
11
|
import OSourceCode from './components/OSourceCode.vue';
|
|
@@ -13,11 +13,11 @@ import OThemeSwitcher from './components/OThemeSwitcher.vue';
|
|
|
13
13
|
|
|
14
14
|
// 导出组件
|
|
15
15
|
const components = {
|
|
16
|
-
OBanner,
|
|
17
16
|
OCookieNotice,
|
|
18
17
|
OFooter,
|
|
19
18
|
OHeaderSearch,
|
|
20
19
|
OHeaderUser,
|
|
20
|
+
OLanguageSwitcher,
|
|
21
21
|
OPlusConfigProvider,
|
|
22
22
|
OSection,
|
|
23
23
|
OSourceCode,
|
|
@@ -25,10 +25,11 @@ const components = {
|
|
|
25
25
|
};
|
|
26
26
|
|
|
27
27
|
// 导出单个组件
|
|
28
|
-
export {
|
|
28
|
+
export { OCookieNotice, OFooter, OHeaderSearch, OHeaderUser, OLanguageSwitcher, OPlusConfigProvider, OSection, OSourceCode, OThemeSwitcher };
|
|
29
29
|
|
|
30
30
|
// 重新导出子目录中的组件
|
|
31
31
|
export * from './components/activity';
|
|
32
|
+
export * from './components/banner';
|
|
32
33
|
export * from './components/element-plus';
|
|
33
34
|
export * from './components/events';
|
|
34
35
|
export * from './components/header';
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
type __VLS_Props = {
|
|
2
|
-
options: any;
|
|
3
|
-
size: string;
|
|
4
|
-
contentJustifyCenter: boolean;
|
|
5
|
-
};
|
|
6
|
-
declare const _default: import('../../vue/dist/vue.esm-bundler.js').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('../../vue/dist/vue.esm-bundler.js').ComponentOptionsMixin, import('../../vue/dist/vue.esm-bundler.js').ComponentOptionsMixin, {}, string, import('../../vue/dist/vue.esm-bundler.js').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
|
|
7
|
-
options: any;
|
|
8
|
-
size: string;
|
|
9
|
-
contentJustifyCenter: boolean;
|
|
10
|
-
}, {}, {}, {}, string, import('../../vue/dist/vue.esm-bundler.js').ComponentProvideOptions, false, {}, HTMLDivElement>;
|
|
11
|
-
export default _default;
|