@opendesign-plus/components 0.0.1-rc.28 → 0.0.1-rc.29
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 +152 -152
- package/dist/components/activity/OActivityApproval.vue.d.ts +8 -8
- package/dist/components/activity/OActivityForm.vue.d.ts +6 -6
- package/dist/components/activity/OActivityMyCalendar.vue.d.ts +8 -4
- package/dist/components/activity/index.d.ts +17 -15
- package/dist/components/config-provider/OPlusConfigProvider.vue.d.ts +24 -0
- package/dist/components/config-provider/index.d.ts +30 -0
- package/dist/components/cookie-notice/OCookieNotice.vue.d.ts +17 -0
- package/dist/components/cookie-notice/index.d.ts +53 -0
- package/dist/components/events/types.d.ts +4 -0
- package/dist/components/{OFooter.vue.d.ts → footer/OFooter.vue.d.ts} +2 -2
- package/dist/components/footer/index.d.ts +89 -0
- package/dist/components/header/index.d.ts +1 -0
- package/dist/components/header/types.d.ts +1 -0
- package/dist/components/{OLanguageSwitcher.vue.d.ts → header-language-switcher/OHeaderLanguageSwitcher.vue.d.ts} +5 -5
- package/dist/components/header-language-switcher/index.d.ts +90 -0
- package/dist/components/{OHeaderSearch.vue.d.ts → header-search/OHeaderSearch.vue.d.ts} +165 -145
- package/dist/components/header-search/index.d.ts +607 -0
- package/dist/components/header-source-code/OHeaderSourceCode.vue.d.ts +18 -0
- package/dist/components/header-source-code/index.d.ts +23 -0
- package/dist/components/header-theme/OHeaderTheme.vue.d.ts +25 -0
- package/dist/components/header-theme/index.d.ts +50 -0
- package/dist/components/{OHeaderUser.vue.d.ts → header-user/OHeaderUser.vue.d.ts} +7 -7
- package/dist/components/header-user/index.d.ts +53 -0
- package/dist/components/meeting/OMeetingCalendar.vue.d.ts +2 -2
- package/dist/components/meeting/OMeetingForm.vue.d.ts +4 -6
- package/dist/components/meeting/OMeetingMyCalendar.vue.d.ts +8 -4
- package/dist/components/meeting/OMeetingPlayback.vue.d.ts +4 -4
- package/dist/components/meeting/components/OMeetingCalendarList.vue.d.ts +1 -0
- package/dist/components/meeting/components/OMeetingPlaybackVideo.vue.d.ts +1 -1
- package/dist/components/meeting/index.d.ts +11 -15
- package/dist/components/meeting/types.d.ts +6 -4
- package/dist/components/meeting/utils.d.ts +2 -1
- package/dist/components/search/OSearchInput.vue.d.ts +54 -34
- package/dist/components/search/index.d.ts +32 -22
- package/dist/components/search/internal/SearchImageInput.vue.d.ts +41 -21
- package/dist/components/search/internal/SearchPanel.vue.d.ts +1 -1
- package/dist/components/{OSection.vue.d.ts → section/OSection.vue.d.ts} +4 -4
- package/dist/components/section/index.d.ts +47 -0
- package/dist/components.cjs.js +40 -40
- package/dist/components.css +1 -1
- package/dist/components.es.js +16758 -16562
- package/dist/index.d.ts +9 -14
- package/docs/design.md +2 -2
- package/package.json +8 -8
- package/scripts/generate-components-index.js +2 -44
- package/src/assets/meeting/svg-icons/icon-all.svg +2 -1
- package/src/assets/meeting/svg-icons/icon-event.svg +2 -1
- package/src/assets/meeting/svg-icons/icon-meet.svg +2 -1
- package/src/assets/meeting/svg-icons/icon-summit.svg +2 -1
- package/src/assets/styles/element-plus.scss +24 -0
- package/src/components/activity/OActivityMyCalendar.vue +19 -12
- package/src/components/common/ClientOnly.vue +13 -0
- package/src/components/{OPlusConfigProvider.vue → config-provider/OPlusConfigProvider.vue} +5 -5
- package/src/components/config-provider/index.ts +10 -0
- package/src/components/{OCookieNotice.vue → cookie-notice/OCookieNotice.vue} +1 -1
- package/src/components/cookie-notice/index.ts +10 -0
- package/src/components/element-plus/OElCookieNotice.vue +2 -2
- package/src/components/events/OEventsApply.vue +85 -1
- package/src/components/events/OEventsList.vue +112 -40
- package/src/components/events/types.ts +1 -0
- package/src/components/{OFooter.vue → footer/OFooter.vue} +4 -4
- package/src/components/footer/index.ts +10 -0
- package/src/components/header/index.ts +2 -0
- package/src/components/header/types.ts +1 -0
- package/src/components/header-language-switcher/index.ts +10 -0
- package/src/components/{OHeaderSearch.vue → header-search/OHeaderSearch.vue} +4 -4
- package/src/components/header-search/index.ts +10 -0
- package/src/components/{OSourceCode.vue → header-source-code/OHeaderSourceCode.vue} +2 -2
- package/src/components/header-source-code/index.ts +10 -0
- package/src/components/{OThemeSwitcher.vue → header-theme/OHeaderTheme.vue} +4 -4
- package/src/components/header-theme/index.ts +10 -0
- package/src/components/{OHeaderUser.vue → header-user/OHeaderUser.vue} +4 -4
- package/src/components/header-user/index.ts +10 -0
- package/src/components/meeting/OMeetingCalendar.vue +32 -21
- package/src/components/meeting/OMeetingForm.vue +44 -37
- package/src/components/meeting/OMeetingMyCalendar.vue +28 -38
- package/src/components/meeting/OMeetingSigCalendar.vue +43 -20
- package/src/components/meeting/components/OMeetingCalendarList.vue +80 -29
- package/src/components/meeting/components/OMeetingDetail.vue +29 -10
- package/src/components/meeting/components/OMeetingPlaybackSubtitles.vue +1 -1
- package/src/components/meeting/components/OMeetingSigAside.vue +11 -6
- package/src/components/meeting/types.ts +7 -5
- package/src/components/meeting/utils.ts +4 -4
- package/src/components/{OSection.vue → section/OSection.vue} +1 -1
- package/src/components/section/index.ts +10 -0
- package/src/i18n/en.ts +2 -2
- package/src/i18n/zh.ts +4 -2
- package/src/index.ts +9 -38
- package/dist/components/OCookieNotice.vue.d.ts +0 -17
- package/dist/components/OPlusConfigProvider.vue.d.ts +0 -23
- package/dist/components/OSourceCode.vue.d.ts +0 -18
- package/dist/components/OThemeSwitcher.vue.d.ts +0 -25
- package/src/components/common/ClientOnlyWrapper.ts +0 -21
- /package/src/components/{OLanguageSwitcher.vue → header-language-switcher/OHeaderLanguageSwitcher.vue} +0 -0
|
@@ -131,35 +131,50 @@ const list = computed(() => {
|
|
|
131
131
|
|
|
132
132
|
<template>
|
|
133
133
|
<div class="o-events-list">
|
|
134
|
-
<div class="filter-wrapper">
|
|
135
|
-
<
|
|
136
|
-
<
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
<
|
|
140
|
-
<
|
|
134
|
+
<div class="filter-slot-wrapper">
|
|
135
|
+
<slot name="filter">
|
|
136
|
+
<div class="filter-wrapper">
|
|
137
|
+
<div class="filter-left">
|
|
138
|
+
<span>{{ t('events.status') }}</span>
|
|
139
|
+
<ORadioGroup v-model="status" :style="{ '--radio-group-gap': '8px' }" @change="changeStatus">
|
|
140
|
+
<ORadio v-for="t in statusOptions" :key="t.value" :value="t.value">
|
|
141
|
+
<template #radio="{ checked }">
|
|
142
|
+
<OToggle :checked="checked">{{ t.label }}</OToggle>
|
|
143
|
+
</template>
|
|
144
|
+
</ORadio>
|
|
145
|
+
</ORadioGroup>
|
|
146
|
+
</div>
|
|
147
|
+
<OInput
|
|
148
|
+
size="large"
|
|
149
|
+
v-model="input"
|
|
150
|
+
:placeholder="t('events.searchPlaceholder')"
|
|
151
|
+
@pressEnter="changeKeyword"
|
|
152
|
+
@clear="changeKeyword"
|
|
153
|
+
clearable>
|
|
154
|
+
<template #prefix>
|
|
155
|
+
<OIcon class="input-icon">
|
|
156
|
+
<OIconSearch />
|
|
157
|
+
</OIcon>
|
|
141
158
|
</template>
|
|
142
|
-
</
|
|
143
|
-
</
|
|
144
|
-
</
|
|
145
|
-
<OInput
|
|
146
|
-
v-model="input"
|
|
147
|
-
:placeholder="t('events.searchPlaceholder')"
|
|
148
|
-
@pressEnter="changeKeyword"
|
|
149
|
-
@clear="changeKeyword"
|
|
150
|
-
clearable>
|
|
151
|
-
<template #prefix>
|
|
152
|
-
<OIcon class="input-icon">
|
|
153
|
-
<OIconSearch />
|
|
154
|
-
</OIcon>
|
|
155
|
-
</template>
|
|
156
|
-
</OInput>
|
|
159
|
+
</OInput>
|
|
160
|
+
</div>
|
|
161
|
+
</slot>
|
|
157
162
|
</div>
|
|
158
163
|
<div class="list-content">
|
|
159
164
|
<OCard v-for="item in list" :key="item.name" :cover="item.cover" :href="item.link">
|
|
160
|
-
<
|
|
161
|
-
|
|
162
|
-
|
|
165
|
+
<div class="tags-wrapper">
|
|
166
|
+
<template v-if="item.tags?.length">
|
|
167
|
+
<OTag v-for="tag in item.tags" :key="tag.title" size="medium">
|
|
168
|
+
<span>{{ tag.title }}</span>
|
|
169
|
+
<template #icon v-if="tag.icon">
|
|
170
|
+
<component :is="tag.icon"></component>
|
|
171
|
+
</template>
|
|
172
|
+
</OTag>
|
|
173
|
+
</template>
|
|
174
|
+
<OTag class="event-status">
|
|
175
|
+
{{ item.status === EventsStatusT.ING ? t('events.statusIng') : t('events.statusFinish') }}
|
|
176
|
+
</OTag>
|
|
177
|
+
</div>
|
|
163
178
|
<div class="event-name">{{ item.name }}</div>
|
|
164
179
|
<div class="event-desc">
|
|
165
180
|
<div class="event-date">{{ item.dateStr }}</div>
|
|
@@ -188,19 +203,32 @@ const list = computed(() => {
|
|
|
188
203
|
.o-events-list {
|
|
189
204
|
--events-card-radius: var(--o-radius-xs);
|
|
190
205
|
--events-tag-radius: var(--o-radius-xs);
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
align-items: center;
|
|
194
|
-
flex-wrap: wrap;
|
|
195
|
-
justify-content: space-between;
|
|
206
|
+
|
|
207
|
+
.filter-slot-wrapper {
|
|
196
208
|
background-color: var(--o-color-fill2);
|
|
197
209
|
border-radius: var(--events-card-radius);
|
|
198
210
|
padding: var(--o-gap-5) var(--o-gap-6);
|
|
199
211
|
gap: var(--o-gap-3) var(--o-gap-2);
|
|
200
212
|
@include text1;
|
|
201
|
-
@include respond('
|
|
213
|
+
@include respond('laptop') {
|
|
214
|
+
padding: var(--o-gap-4) var(--o-gap-5);
|
|
215
|
+
}
|
|
216
|
+
@include respond('pad_h') {
|
|
217
|
+
padding: var(--o-gap-4) var(--o-gap-5);
|
|
218
|
+
}
|
|
219
|
+
@include respond('pad_v') {
|
|
202
220
|
padding: var(--o-gap-3) var(--o-gap-4);
|
|
203
221
|
}
|
|
222
|
+
@include respond('phone') {
|
|
223
|
+
padding: var(--o-gap-3) var(--o-gap-4);
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
.filter-wrapper {
|
|
228
|
+
display: flex;
|
|
229
|
+
align-items: center;
|
|
230
|
+
flex-wrap: wrap;
|
|
231
|
+
justify-content: space-between;
|
|
204
232
|
|
|
205
233
|
.filter-left {
|
|
206
234
|
display: flex;
|
|
@@ -212,6 +240,12 @@ const list = computed(() => {
|
|
|
212
240
|
flex-shrink: 0;
|
|
213
241
|
margin-right: var(--o-gap-5);
|
|
214
242
|
font-weight: 500;
|
|
243
|
+
@include respond('laptop') {
|
|
244
|
+
margin-right: var(--o-gap-4);
|
|
245
|
+
}
|
|
246
|
+
@include respond('pad_h') {
|
|
247
|
+
margin-right: var(--o-gap-3);
|
|
248
|
+
}
|
|
215
249
|
@include respond('pad_v') {
|
|
216
250
|
margin-right: var(--o-gap-4);
|
|
217
251
|
}
|
|
@@ -219,7 +253,6 @@ const list = computed(() => {
|
|
|
219
253
|
margin-right: var(--o-gap-4);
|
|
220
254
|
}
|
|
221
255
|
}
|
|
222
|
-
|
|
223
256
|
.o-toggle {
|
|
224
257
|
--toggle-size: 32px;
|
|
225
258
|
--toggle-padding: 3px 15px;
|
|
@@ -253,6 +286,14 @@ const list = computed(() => {
|
|
|
253
286
|
grid-template-columns: repeat(1, 1fr);
|
|
254
287
|
container-type: inline-size;
|
|
255
288
|
}
|
|
289
|
+
@include respond('laptop') {
|
|
290
|
+
margin-top: var(--o-gap-5);
|
|
291
|
+
gap: var(--o-gap-5);
|
|
292
|
+
}
|
|
293
|
+
@include respond('pad_h') {
|
|
294
|
+
margin-top: var(--o-gap-4);
|
|
295
|
+
gap: var(--o-gap-4);
|
|
296
|
+
}
|
|
256
297
|
@include respond('pad_v') {
|
|
257
298
|
margin-top: var(--o-gap-4);
|
|
258
299
|
gap: var(--o-gap-3);
|
|
@@ -310,17 +351,29 @@ const list = computed(() => {
|
|
|
310
351
|
margin-top: var(--o-gap-4);
|
|
311
352
|
}
|
|
312
353
|
|
|
313
|
-
.
|
|
314
|
-
--tag-color: rgb(var(--o-white));
|
|
315
|
-
--tag-bg-color: rgba(var(--o-black), 0.25);
|
|
316
|
-
--tag-padding: var(--o-gap-1) var(--o-gap-3);
|
|
317
|
-
border: none;
|
|
354
|
+
.tags-wrapper {
|
|
318
355
|
position: absolute;
|
|
319
356
|
top: var(--o-gap-3);
|
|
320
357
|
right: var(--o-gap-3);
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
358
|
+
display: flex;
|
|
359
|
+
align-items: center;
|
|
360
|
+
column-gap: var(--o-gap-2);
|
|
361
|
+
flex-wrap: wrap;
|
|
362
|
+
justify-content: flex-end;
|
|
363
|
+
@include respond('phone') {
|
|
364
|
+
top: var(--o-gap-2);
|
|
365
|
+
right: var(--o-gap-2);
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
.o-tag {
|
|
369
|
+
--tag-color: rgb(var(--o-white));
|
|
370
|
+
--tag-bg-color: rgba(var(--o-black), 0.25);
|
|
371
|
+
--tag-padding: var(--o-gap-1) var(--o-gap-3);
|
|
372
|
+
border: none;
|
|
373
|
+
border-radius: var(--events-tag-radius);
|
|
374
|
+
@include respond('<=pad') {
|
|
375
|
+
--tag-padding: var(--o-gap-1);
|
|
376
|
+
}
|
|
324
377
|
}
|
|
325
378
|
}
|
|
326
379
|
|
|
@@ -351,6 +404,12 @@ const list = computed(() => {
|
|
|
351
404
|
}
|
|
352
405
|
|
|
353
406
|
@include text1;
|
|
407
|
+
@include respond('laptop') {
|
|
408
|
+
margin-top: var(--o-gap-4);
|
|
409
|
+
}
|
|
410
|
+
@include respond('pad_h') {
|
|
411
|
+
margin-top: var(--o-gap-3);
|
|
412
|
+
}
|
|
354
413
|
@include respond('pad_v') {
|
|
355
414
|
margin-top: var(--o-gap-2);
|
|
356
415
|
}
|
|
@@ -382,6 +441,19 @@ const list = computed(() => {
|
|
|
382
441
|
--pagination-item-bg-color-current: var(--o-color-primary1);
|
|
383
442
|
--pagination-item-color-current: #fff;
|
|
384
443
|
|
|
444
|
+
@include respond('laptop') {
|
|
445
|
+
margin-top: var(--o-gap-5);
|
|
446
|
+
}
|
|
447
|
+
@include respond('pad_h') {
|
|
448
|
+
margin-top: var(--o-gap-4);
|
|
449
|
+
}
|
|
450
|
+
@include respond('pad_v') {
|
|
451
|
+
margin-top: var(--o-gap-4);
|
|
452
|
+
}
|
|
453
|
+
@include respond('phone') {
|
|
454
|
+
margin-top: var(--o-gap-4);
|
|
455
|
+
}
|
|
456
|
+
|
|
385
457
|
.o-pagination-wrap {
|
|
386
458
|
justify-content: flex-end;
|
|
387
459
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
2
|
import { ODivider } from '@opensig/opendesign';
|
|
3
3
|
|
|
4
|
-
import ContentWrapper from '
|
|
4
|
+
import ContentWrapper from '../common/ContentWrapper.vue';
|
|
5
5
|
|
|
6
6
|
const props = withDefaults(defineProps<{
|
|
7
7
|
simple: any;
|
|
@@ -34,9 +34,9 @@ const props = withDefaults(defineProps<{
|
|
|
34
34
|
<ContentWrapper v-if="$slots.atom || props.atom">
|
|
35
35
|
<slot name="atom">
|
|
36
36
|
<div v-if="props.atom" class="atom">
|
|
37
|
-
<p class="atom-text">{{ props.atom[props.lang]
|
|
38
|
-
<a :href="props.atom[props.lang]
|
|
39
|
-
<img :src="props.atom[props.lang]
|
|
37
|
+
<p class="atom-text">{{ props.atom[props.lang]?.title }}</p>
|
|
38
|
+
<a :href="props.atom[props.lang]?.href" target="_blank">
|
|
39
|
+
<img :src="props.atom[props.lang]?.img" class="atom-logo" alt="" />
|
|
40
40
|
</a>
|
|
41
41
|
</div>
|
|
42
42
|
<ODivider class="atom-divider" />
|
|
@@ -7,10 +7,12 @@ const OHeader = Object.assign(_OHeader, {
|
|
|
7
7
|
app.component('OHeader', _OHeader);
|
|
8
8
|
},
|
|
9
9
|
});
|
|
10
|
+
|
|
10
11
|
const OHeaderMobile = Object.assign(_OHeaderMobile, {
|
|
11
12
|
install(app: App) {
|
|
12
13
|
app.component('OHeaderMobile', _OHeaderMobile);
|
|
13
14
|
},
|
|
14
15
|
});
|
|
15
16
|
|
|
17
|
+
export * from './types';
|
|
16
18
|
export { OHeader, OHeaderMobile };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import _OHeaderLanguageSwitcher from './OHeaderLanguageSwitcher.vue';
|
|
2
|
+
import type { App } from 'vue';
|
|
3
|
+
|
|
4
|
+
const OHeaderLanguageSwitcher = Object.assign(_OHeaderLanguageSwitcher, {
|
|
5
|
+
install(app: App) {
|
|
6
|
+
app.component('OHeaderLanguageSwitcher', _OHeaderLanguageSwitcher);
|
|
7
|
+
},
|
|
8
|
+
});
|
|
9
|
+
|
|
10
|
+
export { OHeaderLanguageSwitcher };
|
|
@@ -4,15 +4,15 @@ import { OIcon } from '@opensig/opendesign';
|
|
|
4
4
|
import { onClickOutside, useDebounceFn } from '@vueuse/core';
|
|
5
5
|
import { useScreen } from '@opendesign-plus/composables';
|
|
6
6
|
|
|
7
|
-
import SearchImageInput from '
|
|
8
|
-
import SearchPanel from '
|
|
9
|
-
import { useSearchHistory } from '
|
|
7
|
+
import SearchImageInput from '../search/internal/SearchImageInput.vue';
|
|
8
|
+
import SearchPanel from '../search/internal/SearchPanel.vue';
|
|
9
|
+
import { useSearchHistory } from '../search/composables/useSearchHistory';
|
|
10
10
|
import { useI18n } from '@/i18n';
|
|
11
11
|
import type {
|
|
12
12
|
OSearchPayload,
|
|
13
13
|
OSearchRecommendItem,
|
|
14
14
|
OSearchUploadImageFn,
|
|
15
|
-
} from '
|
|
15
|
+
} from '../search/types';
|
|
16
16
|
|
|
17
17
|
import IconSearch from '~icons/components/icon-header-search.svg';
|
|
18
18
|
import IconBack from '~icons/components/icon-header-back.svg';
|
|
@@ -4,14 +4,14 @@ import { OIcon, ODropdown, ODropdownItem } from '@opensig/opendesign';
|
|
|
4
4
|
|
|
5
5
|
import IconChevronDown from '~icons/components/icon-chevron-down.svg';
|
|
6
6
|
|
|
7
|
-
interface CodeItemT {
|
|
7
|
+
export interface CodeItemT {
|
|
8
8
|
label: string;
|
|
9
9
|
href: string;
|
|
10
10
|
icon?: string;
|
|
11
11
|
target?: string;
|
|
12
12
|
}
|
|
13
13
|
|
|
14
|
-
interface CodePropsT {
|
|
14
|
+
export interface CodePropsT {
|
|
15
15
|
title?: string;
|
|
16
16
|
options?: CodeItemT[];
|
|
17
17
|
href?: string;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import _OHeaderSourceCode from './OHeaderSourceCode.vue';
|
|
2
|
+
import type { App } from 'vue';
|
|
3
|
+
|
|
4
|
+
const OHeaderSourceCode = Object.assign(_OHeaderSourceCode, {
|
|
5
|
+
install(app: App) {
|
|
6
|
+
app.component('OHeaderSourceCode', _OHeaderSourceCode);
|
|
7
|
+
},
|
|
8
|
+
});
|
|
9
|
+
|
|
10
|
+
export { OHeaderSourceCode };
|
|
@@ -6,7 +6,7 @@ import { useScreen } from '@opendesign-plus/composables';
|
|
|
6
6
|
import IconSun from '~icons/components/icon-sun.svg';
|
|
7
7
|
import IconMoon from '~icons/components/icon-moon.svg';
|
|
8
8
|
|
|
9
|
-
export interface
|
|
9
|
+
export interface OHeaderThemePropsT {
|
|
10
10
|
theme?: string;
|
|
11
11
|
type?: 'auto' | 'common' | 'mobile';
|
|
12
12
|
lightValue?: string;
|
|
@@ -14,12 +14,12 @@ export interface OThemeSwitcherPropsT {
|
|
|
14
14
|
disabled?: boolean;
|
|
15
15
|
}
|
|
16
16
|
|
|
17
|
-
export interface
|
|
17
|
+
export interface OHeaderThemeEmitsT {
|
|
18
18
|
(e: 'update:theme', value: string): void;
|
|
19
19
|
(e: 'change', val: string): void;
|
|
20
20
|
}
|
|
21
21
|
|
|
22
|
-
const props = withDefaults(defineProps<
|
|
22
|
+
const props = withDefaults(defineProps<OHeaderThemePropsT>(), {
|
|
23
23
|
theme: 'light',
|
|
24
24
|
type: 'auto',
|
|
25
25
|
lightValue: 'light',
|
|
@@ -27,7 +27,7 @@ const props = withDefaults(defineProps<OThemeSwitcherPropsT>(), {
|
|
|
27
27
|
disabled: false,
|
|
28
28
|
});
|
|
29
29
|
|
|
30
|
-
const emit = defineEmits<
|
|
30
|
+
const emit = defineEmits<OHeaderThemeEmitsT>();
|
|
31
31
|
|
|
32
32
|
const { gtPhone } = useScreen();
|
|
33
33
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
2
|
import { OIcon, OBadge, ODropdown, ODropdownItem } from '@opensig/opendesign';
|
|
3
3
|
|
|
4
|
-
import AppAvatar from '
|
|
4
|
+
import AppAvatar from '../common/AppAvatar.vue';
|
|
5
5
|
|
|
6
6
|
import IconAvatar from '~icons/components/icon-avatar-line.svg';
|
|
7
7
|
import IconChevronDown from '~icons/components/icon-chevron-down.svg';
|
|
@@ -10,12 +10,12 @@ import { useScreen } from '@opendesign-plus/composables';
|
|
|
10
10
|
|
|
11
11
|
const { lePadV } = useScreen();
|
|
12
12
|
|
|
13
|
-
interface UserInfoT {
|
|
13
|
+
export interface UserInfoT {
|
|
14
14
|
photo: string;
|
|
15
15
|
username: string;
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
-
interface OptionsItemT {
|
|
18
|
+
export interface OptionsItemT {
|
|
19
19
|
id: string; // id
|
|
20
20
|
label: string; // 标题
|
|
21
21
|
icon?: string; // icon
|
|
@@ -25,7 +25,7 @@ interface OptionsItemT {
|
|
|
25
25
|
logout: boolean; // 是否是退出登录 item
|
|
26
26
|
}
|
|
27
27
|
|
|
28
|
-
interface UserPropsT {
|
|
28
|
+
export interface UserPropsT {
|
|
29
29
|
token?: string;
|
|
30
30
|
lang?: string;
|
|
31
31
|
noticeTotal?: number;
|
|
@@ -77,13 +77,12 @@ const isAutoClick = ref(false);
|
|
|
77
77
|
const group = ref('');
|
|
78
78
|
const getSummitData = async (date: string) => {
|
|
79
79
|
if (props.getSummitListRequest) {
|
|
80
|
+
summitData.value = [];
|
|
80
81
|
const list = await props.getSummitListRequest(date);
|
|
81
82
|
summitData.value = (list || []).map((v: SummitItemT) => {
|
|
82
83
|
return {
|
|
83
84
|
...v,
|
|
84
85
|
type: CalendarDataType.SUMMIT,
|
|
85
|
-
start_date_time: `${ formatDate(v.start_date) } ${ v.start }`,
|
|
86
|
-
end_date_time: `${ formatDate(v.end_date) } ${ v.end }`,
|
|
87
86
|
};
|
|
88
87
|
});
|
|
89
88
|
} else {
|
|
@@ -92,13 +91,12 @@ const getSummitData = async (date: string) => {
|
|
|
92
91
|
};
|
|
93
92
|
const getActivityData = async (date: string) => {
|
|
94
93
|
if (props.getEventsListRequest) {
|
|
94
|
+
eventsData.value = [];
|
|
95
95
|
const list = await props.getEventsListRequest(date);
|
|
96
96
|
eventsData.value = (list || []).map((v: MeetingEventsItemT) => {
|
|
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 }`,
|
|
102
100
|
};
|
|
103
101
|
});
|
|
104
102
|
} else {
|
|
@@ -132,6 +130,7 @@ const paramGetDaysData = async (params: { date: string; type: string }) => {
|
|
|
132
130
|
return;
|
|
133
131
|
}
|
|
134
132
|
try {
|
|
133
|
+
meetingData.value = [];
|
|
135
134
|
const res: MeetingItemT[] = await props.getMeetingListRequest(params.date, group.value, '');
|
|
136
135
|
meetingData.value = res.map((v) => {
|
|
137
136
|
return {
|
|
@@ -151,8 +150,8 @@ const paramGetDaysData = async (params: { date: string; type: string }) => {
|
|
|
151
150
|
const renderData = computed(() => {
|
|
152
151
|
return [
|
|
153
152
|
...meetingData.value,
|
|
154
|
-
...eventsData.value
|
|
155
|
-
...summitData.value
|
|
153
|
+
...eventsData.value,
|
|
154
|
+
...summitData.value,
|
|
156
155
|
].filter((v) => {
|
|
157
156
|
if (tabType.value === CalendarDataType.ALL) {
|
|
158
157
|
return true;
|
|
@@ -307,6 +306,7 @@ defineExpose({
|
|
|
307
306
|
</OIcon>
|
|
308
307
|
</div>
|
|
309
308
|
<OSelect
|
|
309
|
+
v-if="groups?.length > 0"
|
|
310
310
|
v-model="group"
|
|
311
311
|
:placeholder="t(groupType === MeetingGroupType.GROUP ? 'meeting.allGroups' : 'meeting.allSigs')"
|
|
312
312
|
clearable
|
|
@@ -317,8 +317,8 @@ defineExpose({
|
|
|
317
317
|
</div>
|
|
318
318
|
|
|
319
319
|
<div class="right-title">
|
|
320
|
-
{{ t('meeting.latestMeeting') }} 
|
|
321
|
-
<span>{{ dayjs(latestDay)
|
|
320
|
+
<span>{{ t('meeting.latestMeeting') }} </span>
|
|
321
|
+
<span>{{ formatDate(dayjs(latestDay)) }}</span>
|
|
322
322
|
</div>
|
|
323
323
|
</template>
|
|
324
324
|
<template #date-cell="{ data }">
|
|
@@ -364,7 +364,7 @@ defineExpose({
|
|
|
364
364
|
<div class="detail-list">
|
|
365
365
|
<div class="current-day">
|
|
366
366
|
{{ t('meeting.latestMeeting') }}
|
|
367
|
-
<span>{{ dayjs(currentDay)
|
|
367
|
+
<span>{{ formatDate(dayjs(currentDay)) }}</span>
|
|
368
368
|
</div>
|
|
369
369
|
<div class="right-title">
|
|
370
370
|
<div class="title-list">
|
|
@@ -393,7 +393,11 @@ defineExpose({
|
|
|
393
393
|
<OScroller class="meeting-list" show-type="hover" size="small" :style="{
|
|
394
394
|
'--height': calendarHeight
|
|
395
395
|
}">
|
|
396
|
-
<OMeetingCalendarList
|
|
396
|
+
<OMeetingCalendarList
|
|
397
|
+
:list="renderData as unknown as MeetingItemT[]"
|
|
398
|
+
:groupType="groupType"
|
|
399
|
+
:disableFormat="disableFormat"
|
|
400
|
+
>
|
|
397
401
|
<template #empty>
|
|
398
402
|
<slot name="empty"></slot>
|
|
399
403
|
</template>
|
|
@@ -463,6 +467,9 @@ defineExpose({
|
|
|
463
467
|
align-items: center;
|
|
464
468
|
justify-content: center;
|
|
465
469
|
gap: var(--o-gap-6);
|
|
470
|
+
@include respond('<=pad') {
|
|
471
|
+
gap: var(--o-gap-4);
|
|
472
|
+
}
|
|
466
473
|
|
|
467
474
|
.o-select {
|
|
468
475
|
max-width: 240px;
|
|
@@ -489,7 +496,7 @@ defineExpose({
|
|
|
489
496
|
|
|
490
497
|
.month-date {
|
|
491
498
|
font-weight: 500;
|
|
492
|
-
margin: 0
|
|
499
|
+
margin: 0;
|
|
493
500
|
}
|
|
494
501
|
}
|
|
495
502
|
|
|
@@ -619,16 +626,16 @@ defineExpose({
|
|
|
619
626
|
display: flex;
|
|
620
627
|
margin-top: 4px;
|
|
621
628
|
color: var(--o-color-white);
|
|
622
|
-
height:
|
|
629
|
+
height: 16px;
|
|
623
630
|
|
|
624
631
|
.o-icon {
|
|
625
632
|
flex-shrink: 0;
|
|
626
633
|
position: relative;
|
|
627
634
|
border-radius: 50%;
|
|
628
|
-
padding: 2px;
|
|
629
635
|
width: 16px;
|
|
630
636
|
height: 16px;
|
|
631
|
-
font-size:
|
|
637
|
+
font-size: 14px;
|
|
638
|
+
padding: 1px;
|
|
632
639
|
margin-left: -4px;
|
|
633
640
|
margin-top: 0;
|
|
634
641
|
@include respond('<=pad_v') {
|
|
@@ -845,13 +852,12 @@ defineExpose({
|
|
|
845
852
|
justify-content: center;
|
|
846
853
|
align-items: flex-end;
|
|
847
854
|
height: 60px;
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
}
|
|
855
|
+
@include respond('pad_h') {
|
|
856
|
+
--tab-nav-gap: 24px;
|
|
857
|
+
}
|
|
858
|
+
|
|
859
|
+
@include respond-to('pad_v') {
|
|
860
|
+
--tab-nav-justify: flex-end;
|
|
855
861
|
}
|
|
856
862
|
|
|
857
863
|
@include respond('pad_v-laptop') {
|
|
@@ -876,6 +882,11 @@ defineExpose({
|
|
|
876
882
|
}
|
|
877
883
|
}
|
|
878
884
|
|
|
885
|
+
.o-icon {
|
|
886
|
+
svg path {
|
|
887
|
+
fill: currentColor;
|
|
888
|
+
}
|
|
889
|
+
}
|
|
879
890
|
.o-tab-nav-anchor {
|
|
880
891
|
.o-tab-nav-anchor-line {
|
|
881
892
|
width: 100%;
|