@opendesign-plus-test/components 0.0.1-rc.26 → 0.0.1-rc.27

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 (51) hide show
  1. package/dist/chunk-OElCookieNotice.cjs.js +1 -1
  2. package/dist/chunk-OElCookieNotice.es.js +262 -194
  3. package/dist/components/OCookieNotice.vue.d.ts +3 -2
  4. package/dist/components/OFooter.vue.d.ts +22 -1
  5. package/dist/components/OHeaderUser.vue.d.ts +0 -2
  6. package/dist/components/activity/OMyActivityCalendar.vue.d.ts +6 -6
  7. package/dist/components/activity/index.d.ts +3 -3
  8. package/dist/components/element-plus/OElCookieNotice.vue.d.ts +6 -3
  9. package/dist/components/{OHeader.vue.d.ts → header/OHeader.vue.d.ts} +2 -1
  10. package/dist/components/{OHeaderMoblie.vue.d.ts → header/OHeaderMoblie.vue.d.ts} +2 -2
  11. package/dist/components/header/components/HeaderContent.vue.d.ts +6 -0
  12. package/dist/components/header/components/HeaderNav.vue.d.ts +7 -0
  13. package/dist/components/header/components/HeaderNavMoblie.vue.d.ts +17 -0
  14. package/dist/components/header/components/HeaderUbmcNav.vue.d.ts +2 -0
  15. package/dist/components/header/index.d.ts +22 -0
  16. package/dist/components/meeting/OMeetingForm.vue.d.ts +3 -15
  17. package/dist/components/meeting/OMyMeetingCalendar.vue.d.ts +6 -6
  18. package/dist/components/meeting/types.d.ts +11 -4
  19. package/dist/components.cjs.js +47 -47
  20. package/dist/components.css +1 -1
  21. package/dist/components.es.js +17957 -17829
  22. package/dist/index.d.ts +2 -3
  23. package/package.json +1 -1
  24. package/src/assets/svg-icons/icon-chevron-down.svg +1 -1
  25. package/src/components/OCookieNotice.vue +270 -118
  26. package/src/components/OFooter.vue +11 -1
  27. package/src/components/OHeaderUser.vue +14 -81
  28. package/src/components/OSourceCode.vue +1 -1
  29. package/src/components/activity/OMyActivityCalendar.vue +14 -13
  30. package/src/components/common/MoreText.vue +3 -2
  31. package/src/components/element-plus/OElCookieNotice.vue +306 -115
  32. package/src/components/events/OEventsApply.vue +16 -0
  33. package/src/components/events/OEventsList.vue +3 -0
  34. package/src/components/header/OHeader.vue +175 -0
  35. package/src/components/{OHeaderMoblie.vue → header/OHeaderMoblie.vue} +6 -3
  36. package/src/components/{common/HeaderEulerNav.vue → header/components/HeaderContent.vue} +375 -551
  37. package/src/components/header/components/HeaderNav.vue +280 -0
  38. package/src/components/{common → header/components}/HeaderNavMoblie.vue +20 -18
  39. package/src/components/{common → header/components}/HeaderUbmcNav.vue +6 -63
  40. package/src/components/header/index.ts +16 -0
  41. package/src/components/meeting/OMeetingCalendar.vue +16 -2
  42. package/src/components/meeting/OMeetingForm.vue +17 -24
  43. package/src/components/meeting/OMeetingPlayback.vue +1 -1
  44. package/src/components/meeting/OMyMeetingCalendar.vue +5 -6
  45. package/src/components/meeting/components/OMeetingCalendarList.vue +1 -1
  46. package/src/components/meeting/types.ts +11 -5
  47. package/src/index.ts +2 -5
  48. package/dist/components/activity/data.d.ts +0 -51
  49. package/src/components/OHeader.vue +0 -97
  50. package/src/components/activity/data.ts +0 -365
  51. package/src/components/meeting/components/OMyCalendarWrapper.vue +0 -160
@@ -1,53 +1,39 @@
1
1
  <script setup lang="ts">
2
- import { ref, onMounted, onUnmounted, nextTick } from 'vue';
2
+ import { ref } from 'vue';
3
3
  import { OScroller, OIcon, OTag } from '@opensig/opendesign';
4
4
 
5
- import IconCaretLeft from '~icons/components/icon-caret-left.svg';
6
- import IconCaretRight from '~icons/components/icon-caret-right.svg';
5
+ import ContentWrapper from '../../common/ContentWrapper.vue';
7
6
 
8
7
  import { useLocale, useTheme } from '@opendesign-plus/composables';
9
8
 
10
- import { useDebounceFn } from '@vueuse/core';
9
+ export interface OHeaderEmitsT {
10
+ (e: 'handle-mouseenter-sub', val: any): void;
11
+ (e: 'handle-mouseleave-sub', val: any): void;
12
+ }
13
+
14
+ const emit = defineEmits<OHeaderEmitsT>();
11
15
 
12
16
  const props = defineProps({
13
- navData: undefined,
17
+ itemData: undefined,
18
+ itemVisible: undefined,
19
+ community: undefined,
14
20
  bgLeft: undefined,
15
21
  bgRight: undefined,
22
+ hoverIndex: undefined,
16
23
  });
17
24
 
18
25
  const { locale } = useLocale();
19
- const { theme, isDark } = useTheme();
20
-
21
- const navRef = ref();
22
- const navListRef = ref();
23
- const resizeTimer = ref(null);
24
- const navVisibleRight = ref(false);
25
- const navVisibleLeft = ref(false);
26
-
27
- // nav 鼠标滑过事件
28
- const isShow = ref(false);
29
- const navActive = ref();
30
- const subNavContent = ref<any>([]);
31
- const navShortcut = ref<any>([]);
32
- const isPicture = ref(false);
33
- const toggleDebounced = useDebounceFn(function (item: any | null) {
34
- if (item === null) {
35
- navActive.value = '';
36
- isShow.value = false;
37
- isPicture.value = false;
38
- } else {
39
- navActive.value = item.id;
40
- isShow.value = true;
41
- subNavContent.value = item.children;
42
- navShortcut.value = item.shortcut;
43
- isPicture.value = item.withPicture;
44
- }
45
- }, 100);
26
+ const { theme } = useTheme();
27
+
28
+ const navVisible = ref(false);
46
29
 
47
- const linkClick = (url: string, target: string) => {
48
- window.open(url, target);
49
- navActive.value = '';
50
- isShow.value = false;
30
+ const onMouseEnter = () => {
31
+ emit('handle-mouseenter-sub', props.itemData?.id);
32
+ navVisible.value = true;
33
+ };
34
+ const onMouseLeave = () => {
35
+ emit('handle-mouseenter-sub', '');
36
+ navVisible.value = false;
51
37
  };
52
38
 
53
39
  const showDesc = ref(false);
@@ -56,335 +42,395 @@ const descMouseenter = (e: MouseEvent) => {
56
42
  showDesc.value = e.target.clientHeight < e.target.scrollHeight;
57
43
  };
58
44
 
59
- const scrollNavRight = () => {
60
- navVisibleLeft.value = true;
61
- nextTick(() => {
62
- navRef.value.scrollTo({
63
- left: navRef.value.clientWidth,
64
- behavior: 'smooth',
65
- });
66
- });
67
- };
68
- const scrollNavLeft = () => {
69
- navRef.value.scrollTo({
70
- left: 0,
71
- behavior: 'smooth',
72
- });
73
- navVisibleLeft.value = false;
45
+ const onClickNavHref = (item: any, sub: any) => {
46
+ const res = {
47
+ properties: {
48
+ module: 'navigation',
49
+ level1: item.label,
50
+ level2: sub.label,
51
+ target: sub.label,
52
+ url: item.href,
53
+ },
54
+ };
55
+ return res;
74
56
  };
75
57
 
76
- const calculateLayout = () => {
77
- if (navRef.value?.clientWidth < navListRef.value?.clientWidth) {
78
- navVisibleRight.value = true;
79
- }
58
+ const onClickShortcut = (item: any) => {
59
+ const res = {
60
+ properties: {
61
+ module: 'navigation',
62
+ level1: locale.value === 'zh' ? '快捷链接' : 'Quick Link',
63
+ level2: item.label,
64
+ target: item.label,
65
+ url: item.href,
66
+ },
67
+ };
68
+ return res;
80
69
  };
81
-
82
- onMounted(() => {
83
- window.addEventListener('resize', calculateLayout);
84
- // 确保 DOM 完全渲染后再计算
85
- nextTick(() => {
86
- calculateLayout();
87
- resizeTimer.value = setTimeout(() => {
88
- calculateLayout();
89
- }, 1000);
90
- });
91
- });
92
-
93
- // 清理
94
- onUnmounted(() => {
95
- window.removeEventListener('resize', calculateLayout);
96
- clearTimeout(resizeTimer.value);
97
- });
98
70
  </script>
99
71
 
100
72
  <template>
101
- <div class="header-content">
102
- <div class="header-nav" :class="{ 'header-nav-scroll': navVisibleLeft }">
103
- <div class="right-icon" v-if="navVisibleLeft">
104
- <OIcon @click="scrollNavLeft"><IconCaretLeft /></OIcon>
105
- </div>
106
- <nav ref="navRef" class="o-nav" :class="{ 'o-nav-scroll': navVisibleLeft || !navVisibleRight, dark: isDark }">
107
- <ul ref="navListRef" class="o-nav-list">
108
- <li v-for="item in navData" :key="item.id" @mouseenter="toggleDebounced(item)" @mouseleave="toggleDebounced(null)">
109
- <span :id="'tour_headerNav_' + item.ID" class="nav-item">{{ item.label }}</span>
110
- <transition name="transition">
111
- <div v-if="isShow" :class="['nav-dropdown', navActive, theme, `${navActive}-${locale}`]">
112
- <div class="nav-drop-content">
113
- <div class="nav-background-left" :style="{ backgroundImage: `url(${props.bgLeft})` }"></div>
114
- <div class="nav-background-right" :style="{ backgroundImage: `url(${props.bgRight})` }"></div>
115
- <OScroller class="nav-scroller" show-type="always" size="small" disabled-y>
116
- <div class="nav-sub-content">
117
- <div class="content-left">
118
- <div class="item-sub" v-for="(sub, s) in subNavContent" :key="s">
119
- <span class="content-label">{{ sub.label }}</span>
120
- <div class="content-container">
121
- <div v-for="subItem in sub.children" :key="subItem.label" class="content-item">
122
- <a @click="linkClick(subItem.href, '_self')" rel="noopener noreferrer" class="item-label">
123
- <span class="item-name">{{ subItem.label }}</span>
124
- <OIcon v-if="subItem.icon">
125
- <component :is="subItem.icon" class="icon" />
126
- </OIcon>
127
- <OTag v-if="subItem.tag" round="pill" color="danger" size="small" class="content-tag">{{ subItem.tag }}</OTag>
128
- </a>
129
- <div v-if="subItem.description" class="desc-container">
130
- <p class="item-desc" :title="showDesc ? subItem.description : null" @mouseenter="descMouseenter($event)">
131
- {{ subItem.description }}
132
- </p>
133
- </div>
134
- </div>
135
- </div>
136
- </div>
137
- </div>
138
- <div class="split-line" v-if="navShortcut?.length"></div>
139
- <div class="content-right" v-if="navShortcut?.length">
140
- <span class="content-label">快捷链接</span>
141
- <template v-if="!isPicture">
142
- <div v-for="shortcut in navShortcut" :key="shortcut.label" class="shortcut">
143
- <a @click="linkClick(shortcut.href, '_self')" rel="noopener noreferrer" class="shortcut-link">
144
- <span>{{ shortcut.label }}</span>
145
- <OIcon v-if="shortcut.icon">
146
- <component :is="shortcut.icon" class="icon" />
147
- </OIcon>
148
- </a>
149
- </div>
150
- </template>
151
- <template v-else>
152
- <a
153
- v-for="shortcut in navShortcut"
154
- :key="shortcut.label"
155
- @click="linkClick(shortcut.href, '_self')"
156
- rel="noopener noreferrer"
157
- class="review"
158
- >
159
- <img :src="shortcut.picture" class="review-picture" />
160
- <div class="review-content">
161
- <p class="review-label">
162
- {{ shortcut.label }}
163
- </p>
164
- <div class="review-property">
165
- <span>{{ shortcut.remark }}</span>
166
- </div>
167
- </div>
168
- </a>
169
- </template>
170
- </div>
73
+ <div @mouseenter="onMouseEnter" @mouseleave="onMouseLeave">
74
+ <div
75
+ v-if="(props.itemVisible || navVisible) && props.itemData?.children?.length"
76
+ class="nav-content"
77
+ :class="[props.community?.toLowerCase(), props.hoverIndex, theme, `${props.hoverIndex}-${locale}`]"
78
+ >
79
+ <div class="nav-background-left" :style="{ backgroundImage: `url(${props.bgLeft})` }"></div>
80
+ <div class="nav-background-right" :style="{ backgroundImage: `url(${props.bgRight})` }"></div>
81
+ <ContentWrapper>
82
+ <OScroller class="nav-scroller" show-type="always" size="small" disabled-y>
83
+ <div class="nav-sub-content">
84
+ <div class="content-left">
85
+ <div class="item-sub" v-for="(sub, s) in props.itemData?.children" :key="s">
86
+ <span class="content-label">{{ sub.label }}</span>
87
+ <div class="content-container">
88
+ <div v-for="subItem in sub.children" :key="subItem.label" class="content-item">
89
+ <a
90
+ :href="subItem.href"
91
+ :target="subItem?.target || '_self'"
92
+ rel="noopener noreferrer"
93
+ class="item-label"
94
+ v-analytics="() => onClickNavHref(sub, subItem)"
95
+ >
96
+ <span class="item-name">{{ subItem.label }}</span>
97
+ <OIcon v-if="subItem.icon">
98
+ <component :is="subItem.icon" />
99
+ </OIcon>
100
+ <OTag v-if="subItem.tag" round="pill" color="danger" size="small" class="content-tag">{{ subItem.tag }}</OTag>
101
+ </a>
102
+ <div v-if="subItem.description" class="desc-container">
103
+ <p class="item-desc" :title="showDesc ? subItem.description : null" @mouseenter="descMouseenter($event)">
104
+ {{ subItem.description }}
105
+ </p>
171
106
  </div>
172
- </OScroller>
107
+ </div>
173
108
  </div>
174
109
  </div>
175
- </transition>
176
- </li>
177
- </ul>
178
- </nav>
179
- <div class="right-icon" v-if="navVisibleRight && !navVisibleLeft">
180
- <OIcon @click="scrollNavRight"><IconCaretRight /></OIcon>
181
- </div>
110
+ </div>
111
+ <div class="split-line" v-if="props.itemData?.shortcut?.length"></div>
112
+ <div class="content-right" v-if="props.itemData?.shortcut?.length">
113
+ <span class="content-label">{{ locale === 'zh' ? '快捷链接' : 'Quick Link' }}</span>
114
+ <template v-if="!props.itemData?.withPicture">
115
+ <div v-for="shortcut in props.itemData?.shortcut" :key="shortcut.label" class="shortcut">
116
+ <a
117
+ :href="shortcut.href"
118
+ :target="shortcut?.target || '_self'"
119
+ rel="noopener noreferrer"
120
+ class="shortcut-link"
121
+ v-analytics="() => onClickShortcut(shortcut)"
122
+ >
123
+ <span>{{ shortcut.label }}</span>
124
+ <OIcon v-if="shortcut.icon">
125
+ <component :is="shortcut.icon" />
126
+ </OIcon>
127
+ </a>
128
+ </div>
129
+ </template>
130
+ <template v-else>
131
+ <a
132
+ v-for="shortcut in props.itemData?.shortcut"
133
+ :key="shortcut.label"
134
+ :href="shortcut.href"
135
+ :target="shortcut?.target || '_self'"
136
+ rel="noopener noreferrer"
137
+ class="review"
138
+ v-analytics="() => onClickShortcut(shortcut)"
139
+ >
140
+ <img :src="shortcut.picture" class="review-picture" />
141
+ <div class="review-content">
142
+ <p class="review-label">
143
+ {{ shortcut.label }}
144
+ </p>
145
+ <div class="review-property">
146
+ <span>{{ shortcut.remark }}</span>
147
+ </div>
148
+ </div>
149
+ </a>
150
+ </template>
151
+ </div>
152
+ </div>
153
+ </OScroller>
154
+ </ContentWrapper>
182
155
  </div>
183
156
  </div>
184
157
  </template>
185
158
 
186
159
  <style lang="scss" scoped>
187
- .header-content {
188
- .header-nav {
189
- height: 100%;
190
- display: flex;
191
- justify-content: space-between;
192
- width: calc(100% - 64px);
193
- align-items: center;
194
- }
195
- .header-nav-scroll {
196
- width: calc(100% - 64px - 24px);
197
- }
160
+ .nav-content {
161
+ cursor: default;
162
+ overflow: hidden;
163
+ justify-content: center;
164
+ transform-origin: top;
165
+ transition: all 0.3s allow-discrete;
198
166
  }
199
- .o-nav {
167
+ .nav-scroller {
200
168
  height: 100%;
201
- position: relative;
202
- overflow-y: hidden;
169
+ width: 100%;
203
170
  overflow-x: auto;
204
- &::after {
205
- content: '';
206
- position: absolute;
207
- width: 50px;
208
- height: 100%;
209
- right: 0;
210
- top: 0;
211
- background-image: linear-gradient(90deg, rgba(var(--o-mixedgray-1), 0) 0%, rgba(var(--o-mixedgray-1), 1) 100%);
212
- z-index: 0;
213
- }
214
- &::-webkit-scrollbar {
215
- display: none;
171
+ overflow-y: auto;
172
+ white-space: nowrap;
173
+
174
+ @include respond-to('<=pad_v') {
175
+ --scroller-padding: 0 var(--layout-content-padding);
216
176
  }
217
- &.dark {
218
- &::after {
219
- background-image: linear-gradient(90deg, rgba(var(--o-mixedgray-4), 0) 0%, rgba(var(--o-mixedgray-4), 1) 100%);
220
- }
177
+
178
+ :deep(.o-scrollbar) {
179
+ --scrollbar-height: 100%;
221
180
  }
181
+ }
182
+ .nav-sub-content {
183
+ display: flex;
184
+ }
222
185
 
223
- .o-nav-list {
224
- display: flex;
225
- height: 100%;
226
- width: fit-content;
227
- flex-wrap: nowrap;
186
+ .content-left {
187
+ display: flex;
188
+ flex: 1;
189
+ padding: 32px 0;
190
+ }
191
+ .content-label {
192
+ display: inline-block;
193
+ margin-bottom: var(--o-gap-3);
194
+ color: var(--o-color-info3);
195
+ @include text1;
196
+ }
197
+ .content-container {
198
+ display: flex;
199
+ flex-wrap: wrap;
200
+ }
201
+ .content-item {
202
+ width: 200px;
203
+ margin-top: 24px;
204
+ @include respond-to('laptop') {
205
+ width: 170px;
206
+ margin-top: 16px;
207
+ }
208
+ @include respond-to('pad_h') {
209
+ width: 132px;
210
+ margin-top: 12px;
211
+ }
212
+ }
213
+ .item-label {
214
+ display: inline-flex;
215
+ align-items: center;
216
+ margin-bottom: var(--o-gap-1);
217
+ color: var(--o-color-info1);
218
+ @include hover {
219
+ color: var(--o-color-primary1);
220
+ text-decoration: none;
221
+ }
222
+ .item-name {
223
+ font-weight: 500;
228
224
  white-space: nowrap;
229
- padding: 0;
230
- margin: 0;
231
- > li {
232
- position: relative;
233
- display: inline-flex;
234
- align-items: center;
235
- height: 100%;
236
- color: var(--o-color-info1);
237
- cursor: pointer;
238
- transition: all var(--o-duration-s) var(--o-easing-standard);
239
- @include text1;
240
-
241
- @include hover {
242
- z-index: 99;
243
- }
244
-
245
- &::after {
246
- content: '';
247
- position: absolute;
248
- left: var(--o-gap-4);
249
- opacity: 0;
250
- bottom: 0;
251
- width: calc(100% - var(--o-gap-4) * 2);
252
- height: 2px;
253
- border-radius: 1px;
254
- background: var(--o-color-primary1);
255
- transition: all var(--o-duration-s) var(--o-easing-standard);
256
- }
257
-
258
- &.active {
259
- color: var(--o-color-primary1);
260
- z-index: 99;
261
- font-weight: 500;
262
- &::after {
263
- content: '';
264
- opacity: 1;
265
- }
266
- }
267
- .nav-item {
268
- display: block;
269
- padding: 22px var(--o-gap-4);
270
-
271
- @include respond-to('laptop') {
272
- padding: 22px 14px;
273
- }
274
- @include respond-to('pad_h') {
275
- padding: 22px 8px;
276
- }
277
- &.en {
278
- @media (min-width: 841px) and (max-width: 1000px) {
279
- padding: var(--o-gap-2);
280
- }
281
- }
282
- }
225
+ @include text1;
226
+ }
227
+ .o-icon {
228
+ --icon-size: 24px;
229
+ margin-left: var(--o-gap-2);
230
+ @include respond-to('<=laptop') {
231
+ --icon-size: 16px;
283
232
  }
284
233
  }
285
- }
286
- .o-nav-scroll {
287
- &::after {
288
- display: none;
234
+ .content-tag {
235
+ margin-left: var(--o-gap-2);
236
+ --layout-pkg-radius: var(--o-radius-xs);
237
+ @include respond-to('<=laptop') {
238
+ display: none;
239
+ }
289
240
  }
290
241
  }
291
- .nav-dropdown {
292
- position: fixed;
293
- top: var(--o-header-height);
294
- left: 0;
295
- right: 0;
296
- background: var(--o-color-fill2);
297
- z-index: 90;
298
- color: var(--o-color-info1);
299
- display: flex;
300
- font-weight: normal;
301
- cursor: default;
242
+ .desc-container {
302
243
  overflow: hidden;
244
+ position: relative;
245
+ height: 36px;
246
+ white-space: normal;
303
247
 
304
- min-height: 320px;
305
- justify-content: center;
306
- transform-origin: top;
307
-
308
- &.light {
309
- box-shadow: 0 3px 6px rgba(#001255, 0.08);
248
+ .item-desc {
249
+ color: var(--o-color-info2);
250
+ word-break: normal;
251
+ @include tip2;
252
+ @include text-truncate(2);
310
253
  }
254
+ }
311
255
 
256
+ .split-line {
257
+ background: var(--o-color-control4);
258
+ width: 1px;
259
+ margin: 0 16px;
260
+ flex-shrink: 0;
261
+
262
+ @include respond-to('<=pad') {
263
+ display: none;
264
+ }
265
+ }
266
+ .content-right {
267
+ width: 342px;
268
+ padding: 32px 0;
269
+ flex-shrink: 0;
312
270
  @include respond-to('laptop') {
313
- min-height: 300px;
271
+ width: 240px;
314
272
  }
273
+
315
274
  @include respond-to('pad_h') {
316
- min-height: 260px;
275
+ width: 240px;
317
276
  }
318
277
 
319
- @include respond-to('>pad_v') {
320
- &.dark {
321
- &:after {
322
- content: '';
323
- position: absolute;
324
- left: 0;
325
- right: 0;
326
- bottom: 0;
327
- height: 1px;
328
- background-color: var(--o-color-control4);
329
- }
330
- }
278
+ @include respond-to('<=pad') {
279
+ display: none;
331
280
  }
332
281
 
333
- .content-container {
282
+ .shortcut {
283
+ min-height: 42px;
284
+ background: var(--o-color-fill3);
285
+ border-radius: var(--o-radius_control-xs);
286
+ padding: 10px 24px;
334
287
  display: flex;
335
- margin: 0;
336
- padding: 0;
337
- flex-wrap: wrap;
338
- .content-item {
339
- width: 200px;
340
- margin-top: 24px;
341
- &:nth-of-type(1) {
342
- margin-top: 0;
343
- }
288
+ align-items: center;
289
+ gap: var(--o-gap-3);
290
+ cursor: pointer;
291
+ @include tip1;
344
292
 
345
- @include respond-to('laptop') {
346
- width: 170px;
347
- margin-top: 16px;
348
- }
293
+ @include respond-to('laptop') {
294
+ @include text1;
295
+ }
349
296
 
350
- @include respond-to('pad_h') {
351
- width: 132px;
352
- margin-top: 16px;
353
- }
297
+ @include respond-to('pad_h') {
298
+ @include text1;
299
+ }
300
+
301
+ & + .shortcut {
302
+ margin-top: var(--o-gap-2);
354
303
  }
355
- .item-label {
356
- display: inline-flex;
304
+
305
+ .shortcut-link {
306
+ display: flex;
357
307
  align-items: center;
358
- margin-bottom: var(--o-gap-1);
359
- .item-name {
360
- font-weight: 500;
361
- white-space: nowrap;
362
- @include text1;
308
+ color: var(--o-color-link1);
309
+ word-break: normal;
310
+ white-space: normal;
311
+ @include hover {
312
+ color: var(--o-color-primary2);
313
+ text-decoration: none;
314
+ }
315
+
316
+ span {
317
+ @include text-truncate(1);
363
318
  }
364
- .content-tag {
319
+
320
+ .o-icon {
321
+ --icon-size: 16px;
365
322
  margin-left: var(--o-gap-2);
366
- border-radius: var(--o-radius-xs);
367
- @include respond-to('<=laptop') {
368
- display: none;
323
+ }
324
+ }
325
+ }
326
+
327
+ .review {
328
+ display: flex;
329
+ align-items: unset;
330
+ position: relative;
331
+ @include hover {
332
+ text-decoration: none;
333
+ }
334
+
335
+ @include respond-to('pad_h') {
336
+ &:not(:last-child) {
337
+ &:after {
338
+ content: '';
339
+ position: absolute;
340
+ left: 0;
341
+ right: 0;
342
+ bottom: -8px;
343
+ height: 1px;
344
+ background: var(--o-color-control4);
369
345
  }
370
346
  }
371
347
  }
372
- .desc-container {
373
- overflow: hidden;
374
- position: relative;
375
- height: 36px;
348
+
349
+ & + .review {
350
+ margin-top: var(--o-gap-3);
351
+ }
352
+
353
+ .review-picture {
354
+ width: 120px;
355
+ height: auto;
356
+ display: block;
357
+ object-fit: contain;
358
+
359
+ @include respond-to('<=laptop') {
360
+ display: none;
361
+ }
362
+ }
363
+ .review-content {
364
+ margin-left: var(--o-gap-2);
365
+ flex: 1;
366
+ max-width: 212px;
367
+ height: 68px;
368
+ display: flex;
369
+ flex-direction: column;
370
+ justify-content: space-between;
376
371
  white-space: normal;
377
372
 
378
- .item-desc {
379
- color: var(--o-color-info2);
373
+ @include respond-to('<=laptop') {
374
+ margin-left: unset;
375
+ height: auto;
376
+ }
377
+
378
+ .review-label {
380
379
  word-break: normal;
381
- margin: 0;
382
- @include tip2;
380
+ max-height: 48px;
381
+ color: var(--o-color-info1);
382
+ font-weight: 500;
383
+ cursor: pointer;
384
+ @include text1;
383
385
  @include text-truncate(2);
386
+
387
+ @include hover {
388
+ color: var(--o-color-primary1);
389
+ }
390
+ @include respond-to('pad_v-laptop') {
391
+ max-height: 44px;
392
+ }
393
+ }
394
+
395
+ .review-property {
396
+ color: var(--o-color-info3);
397
+ overflow: hidden;
398
+ white-space: nowrap;
399
+ text-overflow: ellipsis;
400
+ @include tip2;
384
401
  }
385
402
  }
386
403
  }
404
+ }
405
+
406
+ .nav-background-left {
407
+ position: absolute;
408
+ left: 0;
409
+ top: -87px;
410
+ width: 173px;
411
+ height: 249px;
412
+ background-size: cover;
413
+ z-index: -1;
414
+
415
+ @include respond-to('<=laptop') {
416
+ display: none;
417
+ }
418
+ }
419
+ .nav-background-right {
420
+ position: absolute;
421
+ right: 0;
422
+ bottom: 0;
423
+ width: 173px;
424
+ height: 172px;
425
+ background-size: cover;
426
+ z-index: -1;
387
427
 
428
+ @include respond-to('<=laptop') {
429
+ display: none;
430
+ }
431
+ }
432
+
433
+ .openeuler {
388
434
  &.download {
389
435
  .item-sub {
390
436
  margin-left: 80px;
@@ -864,255 +910,33 @@ onUnmounted(() => {
864
910
  }
865
911
  }
866
912
 
867
- .right-icon {
868
- display: flex;
869
- align-items: center;
870
- .o-icon {
871
- --icon-size: 24px;
872
- cursor: pointer;
873
- }
874
- }
875
-
876
- .nav-drop-content {
877
- max-width: 1416px;
878
- width: calc(100% - 2 * var(--layout-content-padding));
879
- display: flex;
880
- }
881
-
882
- .nav-background-left {
883
- position: absolute;
884
- left: 0;
885
- top: -87px;
886
- width: 173px;
887
- height: 249px;
888
- background-size: cover;
889
- z-index: -1;
890
-
891
- @include respond-to('<=laptop') {
892
- display: none;
893
- }
894
- }
895
-
896
- .nav-background-right {
897
- position: absolute;
898
- right: 0;
899
- bottom: 0;
900
- width: 173px;
901
- height: 172px;
902
- background-size: cover;
903
- z-index: -1;
904
-
905
- @include respond-to('<=laptop') {
906
- display: none;
907
- }
908
- }
909
- .nav-sub-content {
910
- display: flex;
911
- flex: 1;
912
- position: relative;
913
- }
914
- .content-left {
915
- padding: 32px 24px 40px 0;
916
- display: flex;
917
-
918
- @include respond-to('laptop') {
919
- padding: var(--o-gap-5) var(--o-gap-4) var(--o-gap-5) 0;
920
- }
921
-
922
- @include respond-to('<=pad') {
923
- padding: var(--o-gap-5) 0;
924
- }
925
-
926
- .icon {
927
- width: 24px;
928
- height: 24px;
929
- padding-left: 8px;
930
- }
931
- }
932
- .content-label {
933
- display: inline-block;
934
- margin-bottom: var(--o-gap-3);
935
- color: var(--o-color-info3);
936
- @include tip1;
937
-
938
- @include respond-to('laptop') {
939
- @include text1;
940
- }
941
- }
942
- .split-line {
943
- background: var(--o-color-control4);
944
- width: 1px;
945
- min-height: 320px;
946
- flex-shrink: 0;
947
-
948
- @include respond-to('laptop') {
949
- min-height: 300px;
950
- }
951
- @include respond-to('<=pad') {
952
- display: none;
953
- }
954
- }
955
- .content-right {
956
- width: 358px;
957
- padding-top: var(--o-gap-6);
958
- padding-bottom: var(--o-gap-6);
959
- padding-left: var(--o-gap-4);
960
-
961
- @include respond-to('laptop') {
962
- width: 261px;
963
- padding: var(--o-gap-5) 0 var(--o-gap-5) var(--o-gap-4);
913
+ .mindspore {
914
+ .content-left {
915
+ flex: 1;
964
916
  }
965
-
966
- @include respond-to('pad_h') {
967
- width: 261px;
968
- }
969
-
970
- @include respond-to('<=pad') {
971
- display: none;
972
- }
973
-
974
- .shortcut {
975
- width: 342px;
976
- min-height: 42px;
977
- background: var(--o-color-fill3);
978
- border-radius: var(--o-radius_control-xs);
979
- padding: 10px 24px;
980
- display: flex;
981
- align-items: center;
982
- gap: var(--o-gap-3);
983
- cursor: pointer;
984
- @include tip1;
985
-
917
+ .item-sub + .item-sub {
918
+ margin-left: 48px;
986
919
  @include respond-to('laptop') {
987
- width: 245px;
988
- @include text1;
920
+ margin-left: 32px;
989
921
  }
990
-
991
922
  @include respond-to('pad_h') {
992
- width: 245px;
993
- @include text1;
994
- }
995
-
996
- & + .shortcut {
997
- margin-top: var(--o-gap-2);
998
- }
999
-
1000
- .shortcut-link {
1001
- display: flex;
1002
- align-items: center;
1003
- color: var(--o-color-link1);
1004
- word-break: normal;
1005
- white-space: normal;
1006
- @include hover {
1007
- color: var(--o-color-primary2);
1008
- }
1009
-
1010
- span {
1011
- @include text-truncate(1);
1012
- }
1013
-
1014
- .icon {
1015
- height: 16px;
1016
- width: 16px;
1017
- margin-left: var(--o-gap-2);
1018
- }
923
+ margin-left: 16px;
1019
924
  }
1020
925
  }
1021
-
1022
- .review {
1023
- width: 342px;
1024
- display: flex;
1025
- align-items: unset;
1026
- position: relative;
1027
-
1028
- @include respond-to('laptop') {
1029
- width: 245px;
1030
- }
1031
-
1032
- @include respond-to('pad_h') {
1033
- width: 245px;
1034
- &:not(:last-child) {
1035
- &:after {
1036
- content: '';
1037
- position: absolute;
1038
- left: 0;
1039
- right: 0;
1040
- bottom: -8px;
1041
- height: 1px;
1042
- background: var(--o-color-control4);
1043
- }
1044
- }
1045
- }
1046
-
1047
- & + .review {
1048
- margin-top: var(--o-gap-3);
1049
- }
1050
-
1051
- .review-picture {
1052
- width: 120px;
1053
- height: auto;
1054
- display: block;
1055
- object-fit: contain;
1056
-
1057
- @include respond-to('<=laptop') {
1058
- display: none;
1059
- }
1060
- }
1061
- .review-content {
1062
- margin-left: var(--o-gap-2);
1063
- flex: 1;
1064
- max-width: 212px;
1065
- height: 68px;
1066
- display: flex;
1067
- flex-direction: column;
1068
- justify-content: space-between;
1069
- white-space: normal;
1070
-
1071
- @include respond-to('<=laptop') {
1072
- margin-left: unset;
1073
- height: auto;
1074
- }
1075
-
1076
- .review-label {
1077
- word-break: normal;
1078
- max-height: 48px;
1079
- color: var(--o-color-info1);
1080
- font-weight: 500;
1081
- cursor: pointer;
1082
- @include text1;
1083
- @include text-truncate(2);
1084
-
1085
- @include hover {
1086
- color: var(--o-color-primary1);
1087
- }
1088
- @include respond-to('pad_v-laptop') {
1089
- max-height: 44px;
1090
- }
1091
- }
1092
-
1093
- .review-property {
1094
- color: var(--o-color-info3);
1095
- overflow: hidden;
1096
- white-space: nowrap;
1097
- text-overflow: ellipsis;
1098
- @include tip2;
1099
- }
1100
- }
926
+ .content-container {
927
+ flex-direction: column;
1101
928
  }
1102
- }
1103
- .nav-scroller {
1104
- height: 100%;
1105
- width: 100%;
1106
- overflow-x: auto;
1107
- overflow-y: auto;
1108
- white-space: nowrap;
1109
929
 
1110
- @include respond-to('<=pad_v') {
1111
- --scroller-padding: 0 var(--layout-content-padding);
930
+ .nav-background-left {
931
+ left: 0;
932
+ top: 0;
933
+ width: 540px;
934
+ height: 360px;
1112
935
  }
1113
-
1114
- :deep(.o-scrollbar) {
1115
- --scrollbar-height: 100%;
936
+ .nav-background-right {
937
+ width: 643px;
938
+ height: 364px;
939
+ z-index: -1;
1116
940
  }
1117
941
  }
1118
942
  </style>