dashboard-shell-shell 3.0.5-test.4 → 3.0.5-test.5

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 (33) hide show
  1. package/assets/styles/global/_button.scss +7 -7
  2. package/assets/styles/global/_tooltip.scss +4 -4
  3. package/assets/styles/themes/_light.scss +3 -1
  4. package/assets/translations/zh-hans.yaml +76 -0
  5. package/components/ActionDropdown.vue +1 -1
  6. package/components/CopyToClipboard.vue +15 -0
  7. package/components/Drawer/Chrome.vue +2 -2
  8. package/components/Drawer/ResourceDetailDrawer/ConfigTab.vue +23 -23
  9. package/components/Drawer/ResourceDetailDrawer/index.vue +2 -2
  10. package/components/ExplorerMembers.vue +18 -3
  11. package/components/PodSecurityAdmission.vue +1 -1
  12. package/components/Resource/Detail/Metadata/IdentifyingInformation/index.vue +1 -3
  13. package/components/Resource/Detail/Metadata/KeyValue.vue +8 -4
  14. package/components/Resource/Detail/Metadata/index.vue +2 -1
  15. package/components/Resource/Detail/TitleBar/Title.vue +4 -3
  16. package/components/Resource/Detail/TitleBar/index.vue +103 -24
  17. package/components/ResourceDetail/legacy.vue +3 -1
  18. package/components/SortableTable/index.vue +1 -1
  19. package/components/Tabbed/index.vue +1 -1
  20. package/components/auth/Principal.vue +2 -2
  21. package/components/breadcrumb/index.vue +340 -0
  22. package/components/form/LabeledSelect.vue +3 -2
  23. package/components/form/Taints.vue +2 -1
  24. package/components/form/WorkloadPorts.vue +143 -123
  25. package/edit/workload/index.vue +3 -3
  26. package/package.json +1 -1
  27. package/pages/account/index.vue +5 -13
  28. package/pages/account/pri.vue +229 -0
  29. package/pages/auth/login.vue +6 -1
  30. package/pages/c/_cluster/_product/namespaces.vue +1 -1
  31. package/rancher-components/BadgeState/BadgeState.vue +33 -52
  32. package/rancher-components/RcDropdown/RcDropdownMenu.vue +8 -7
  33. package/store/i18n.js +3 -0
@@ -169,13 +169,13 @@ button,
169
169
  }
170
170
 
171
171
  .role-multi-action {
172
- // background: var(--accent-btn);
173
- // border: solid thin var(--primary);
174
- color: var(--primary) !important;
175
- border-radius: 2px;
176
- min-width: 32px;
177
- height: 32px;
178
- width: 32px;
172
+ background-color: var(--body-bg);
173
+ border: solid thin var(--primary);
174
+ color: var(--primary) !important;
175
+ border-radius: 2px;
176
+ min-width: 32px;
177
+ height: 32px;
178
+ width: 32px;
179
179
  }
180
180
 
181
181
  .icon-group i {
@@ -11,7 +11,7 @@
11
11
  background: var(--tooltip-bg);
12
12
  box-shadow: 0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 9px 28px 8px rgba(0, 0, 0, 0.05);
13
13
  color: var(--tooltip-text);
14
- border-radius: 4px;
14
+ border-radius: 2px;
15
15
  padding: 8px;
16
16
  }
17
17
 
@@ -123,14 +123,14 @@
123
123
  .v-popper__popper {
124
124
  $color: var(--popover-bg);
125
125
  border: 1px solid var(--border);
126
- border-radius: var(--border-radius-lg);
126
+ border-radius: 2px;
127
127
 
128
128
  .v-popper__inner {
129
- border-radius: 4px;
129
+ border-radius: 2px;
130
130
  background: $color;
131
131
  color: var(--popover-text);
132
132
  padding: 10px;
133
- border-radius: var(--border-radius-lg);
133
+ border-radius: 0px;
134
134
  border: none;
135
135
 
136
136
  a {
@@ -8,6 +8,8 @@ $darker : #333;
8
8
  //light disabled
9
9
  $dark : #ffffff;
10
10
 
11
+ $scroll_dark: #8b8b8b;
12
+
11
13
  //light border and buttons
12
14
  $medium : #d7d7d7;
13
15
 
@@ -364,7 +366,7 @@ BODY, .theme-light {
364
366
 
365
367
  --body-bg : #{$lightest};
366
368
  --body-text : #{$darkest};
367
- --scrollbar-thumb : #{$dark};
369
+ --scrollbar-thumb : #{$scroll_dark};
368
370
  --scrollbar-thumb-dropdown : #{$lighter};
369
371
  --scrollbar-track : transparent;
370
372
 
@@ -7856,3 +7856,79 @@ gitPicker:
7856
7856
  networkAttachmentDefinition:
7857
7857
  tabs:
7858
7858
  config: 配置
7859
+
7860
+
7861
+ component:
7862
+ drawer:
7863
+ chrome:
7864
+ ariaLabel:
7865
+ close: 关闭抽屉
7866
+ close: 关闭
7867
+ resourceDetailDrawer:
7868
+ title: "{resourceName} ({resourceType}) - 配置"
7869
+ editConfig: 编辑配置
7870
+ editYaml: 编辑YAML
7871
+ ariaLabel:
7872
+ editConfig: 编辑配置
7873
+ editYaml: 编辑YAML
7874
+ yamlTab:
7875
+ title: YAML
7876
+ configTab:
7877
+ title: 配置
7878
+ resource:
7879
+ detail:
7880
+ card:
7881
+ resourceUsage:
7882
+ used: Used
7883
+ amount: '{used} of {available}'
7884
+ cpu: CPU
7885
+ memory: Memory
7886
+ pods: Pods
7887
+ resourcesCard:
7888
+ title: 资源
7889
+ rows:
7890
+ services: 服务
7891
+ ingresses: Ingresses
7892
+ referredToBy: 参考
7893
+ refersTo: 引用
7894
+ podsCard:
7895
+ title: Pods
7896
+ ariaResourceName: pods
7897
+ insightsCard:
7898
+ title: Insights
7899
+ rows:
7900
+ conditions: Conditions
7901
+ events: Events
7902
+ scaler:
7903
+ ariaLabel:
7904
+ increase: Increase {resourceName}
7905
+ decrease: Decrease {resourceName}
7906
+ titleBar:
7907
+ showConfiguration: 显示配置
7908
+ ariaLabel:
7909
+ actionMenu: 更多操作
7910
+ showConfiguration: 显示{resource}的整个配置
7911
+ metadata:
7912
+ labelsAndAnnotations: 标签和注释
7913
+ identifyingInformation:
7914
+ createdBy: 创建
7915
+ namespace: 命名空间
7916
+ project: 项目
7917
+ age: 使用时长
7918
+ image: 图片
7919
+ ready: 准备
7920
+ up-to-date: Up-to-date
7921
+ available: 可用
7922
+ serviceAccount: 服务帐户
7923
+ type: 类型
7924
+ certificate: 证书
7925
+ issuer: Issuer
7926
+ expires: 到期
7927
+ workspace: 工作区
7928
+ annotations:
7929
+ title: 注释
7930
+ labels:
7931
+ title: 标签
7932
+ keyValue:
7933
+ noRows: 此资源上没有配置{propertyName}.
7934
+ showConfiguration: 显示配置
@@ -212,7 +212,7 @@ export default {
212
212
  border: 1px solid var(--dropdown-border);
213
213
  padding: 0px;
214
214
  text-align: left;
215
- border-radius: 4px;
215
+ border-radius: 2px;
216
216
 
217
217
  LI {
218
218
  padding: 10px;
@@ -42,3 +42,18 @@ export default {
42
42
  @click="clicked"
43
43
  />
44
44
  </template>
45
+
46
+ <style lang="scss"scoped>
47
+ button {
48
+ min-width: auto;
49
+ }
50
+
51
+ .bg-success{
52
+ background-color: var(--success-hover-text) !important;
53
+ color: #333 !important;
54
+ }
55
+ .bg-success:hover{
56
+ background-color: var(--success-hover-text) !important;
57
+ color: var(--primary) !important;
58
+ }
59
+ </style>
@@ -35,7 +35,7 @@ const ariaLabel = computed(() => i18n.t('component.drawer.chrome.ariaLabel.close
35
35
  </div>
36
36
  </slot>
37
37
  </div>
38
- <div class="body pp-4">
38
+ <div class="body">
39
39
  <slot name="body" />
40
40
  </div>
41
41
  <div class="footer pp-4">
@@ -93,7 +93,7 @@ const ariaLabel = computed(() => i18n.t('component.drawer.chrome.ariaLabel.close
93
93
  }
94
94
 
95
95
  .body {
96
- background-color: var(--drawer-body-bg);
96
+ background-color: var(--body-bg);
97
97
  flex: 1;
98
98
  overflow-y: scroll;
99
99
  }
@@ -16,37 +16,37 @@ const store = useStore();
16
16
  const i18n = useI18n(store);
17
17
  </script>
18
18
  <template>
19
- <Tab
19
+ <!-- <Tab
20
20
  class="config-tab"
21
21
  name="config-tab"
22
22
  :label="i18n.t('component.drawer.resourceDetailDrawer.configTab.title')"
23
23
  >
24
- <div class="container">
25
- <component
26
- :is="props.component"
27
- :value="props.resource"
28
- :liveValue="props.resource"
29
- :resourceType="props.resourceType"
30
- :mode="_VIEW"
31
- :real-mode="_VIEW"
32
- :initial-value="props.resource"
33
- :use-tabbed-hash="false /* Have to disable hashing on child components or it modifies the url and closes the drawer */"
34
- as="config"
35
- />
36
- </div>
37
- </Tab>
24
+ </Tab> -->
25
+ <div class="container">
26
+ <component
27
+ :is="props.component"
28
+ :value="props.resource"
29
+ :liveValue="props.resource"
30
+ :resourceType="props.resourceType"
31
+ :mode="_VIEW"
32
+ :real-mode="_VIEW"
33
+ :initial-value="props.resource"
34
+ :use-tabbed-hash="false /* Have to disable hashing on child components or it modifies the url and closes the drawer */"
35
+ as="config"
36
+ />
37
+ </div>
38
38
  </template>
39
39
 
40
40
  <style lang="scss" scoped>
41
+ .container {
42
+ background-color: var(--body-bg);
43
+ border-radius: var(--border-radius-md);
44
+ padding: 16px;
45
+ max-width: 100%;
46
+ width: 100%;
47
+ position: relative;
48
+ }
41
49
  .config-tab {
42
- .container {
43
- background-color: var(--body-bg);
44
- border-radius: var(--border-radius-md);
45
- padding: 16px;
46
- max-width: 100%;
47
- width: 100%;
48
- position: relative;
49
- }
50
50
 
51
51
  // Handle the loading indicator
52
52
  :deep() .overlay-content-mode {
@@ -85,10 +85,10 @@ const canEdit = computed(() => {
85
85
  v-if="configTabProps"
86
86
  v-bind="configTabProps"
87
87
  />
88
- <YamlTab
88
+ <!-- <YamlTab
89
89
  v-if="yamlTabProps"
90
90
  v-bind="yamlTabProps"
91
- />
91
+ /> -->
92
92
  </Tabbed>
93
93
  </template>
94
94
  <template #additional-actions>
@@ -293,6 +293,7 @@ export default {
293
293
  :create-button-label="t('members.createActionLabel')"
294
294
  :is-creatable="false"
295
295
  :type-display="t('members.clusterAndProject')"
296
+
296
297
  />
297
298
  <Banner
298
299
  v-if="isLocal"
@@ -304,7 +305,7 @@ export default {
304
305
  name="cluster-membership"
305
306
  :label="t('members.clusterMembership')"
306
307
  >
307
- <div
308
+ <!-- <div
308
309
  v-if="canEditClusterMembers"
309
310
  class="row mb-10 cluster-add"
310
311
  >
@@ -314,7 +315,7 @@ export default {
314
315
  >
315
316
  {{ t('members.createActionLabel') }}
316
317
  </router-link>
317
- </div>
318
+ </div> -->
318
319
  <ResourceTable
319
320
  :schema="schema"
320
321
  :headers="headers"
@@ -325,7 +326,21 @@ export default {
325
326
  :loading="$fetchState.pending || !currentCluster || loadingClusterBindings"
326
327
  sub-search="subSearch"
327
328
  :sub-fields="['nameDisplay']"
328
- />
329
+ >
330
+ <template #header-right>
331
+ <div
332
+ v-if="canEditClusterMembers"
333
+ class="row mb-10 mr-10 cluster-add"
334
+ >
335
+ <router-link
336
+ :to="createLocation"
337
+ class="btn role-primary pull-right"
338
+ >
339
+ {{ t('members.createActionLabel') }}
340
+ </router-link>
341
+ </div>
342
+ </template>
343
+ </ResourceTable>
329
344
  </Tab>
330
345
  <Tab
331
346
  v-if="canManageProjectMembers && !isHarvester"
@@ -218,7 +218,7 @@ export default defineComponent({
218
218
  :key="i"
219
219
  class="row row--y-center mb-20"
220
220
  >
221
- <span class="col">
221
+ <span class="col span-1">
222
222
  <Checkbox
223
223
  v-if="!labelsAlwaysActive"
224
224
  v-model:value="psaControl.active"
@@ -89,12 +89,10 @@ const getRowValueId = (row:Row): string => `value-${ row.label }:${ row.value }`
89
89
  flex-direction: column;
90
90
 
91
91
  .row {
92
- margin-bottom: 8px;
93
-
92
+ min-height: 40px;
94
93
  .value {
95
94
  display: flex;
96
95
  flex-direction: row;
97
- align-items: center;
98
96
 
99
97
  &, & * {
100
98
  max-width: 100%;
@@ -53,13 +53,13 @@ const showConfigurationMoreFocusSelector = computed(() => `[data-testid="${ show
53
53
 
54
54
  <template>
55
55
  <div class="key-value">
56
- <div class="heading">
56
+ <div class="heading h40">
57
57
  <span class="title text-deemphasized">{{ propertyName }}</span>
58
58
  <span class="count">{{ rows.length }}</span>
59
59
  </div>
60
60
  <div
61
61
  v-if="visibleRows.length === 0"
62
- class="empty mmt-2 text-deemphasized"
62
+ class="empty text-deemphasized"
63
63
  >
64
64
  <div class="no-rows">
65
65
  {{ i18n.t('component.resource.detail.metadata.keyValue.noRows', {propertyName: lowercasePropertyName}) }}
@@ -78,7 +78,7 @@ const showConfigurationMoreFocusSelector = computed(() => `[data-testid="${ show
78
78
  <div
79
79
  v-for="row in visibleRows"
80
80
  :key="displayValue(row)"
81
- class="row"
81
+ class="row h40"
82
82
  >
83
83
  <Rectangle
84
84
  v-clean-tooltip="displayValue(row)"
@@ -104,18 +104,22 @@ const showConfigurationMoreFocusSelector = computed(() => `[data-testid="${ show
104
104
  display: flex;
105
105
  flex-direction: column;
106
106
  align-items: flex-start;
107
+
108
+ .h40 {
109
+ min-height: 40px;
110
+ }
107
111
 
108
112
  .count {
109
113
  margin-left: 24px;
110
114
  }
111
115
 
112
116
  .heading {
113
- margin-bottom: 8px;
114
117
  }
115
118
 
116
119
  .row {
117
120
  display: block;
118
121
  width: 100%;
122
+ line-height: 40px;
119
123
 
120
124
  &:not(:nth-child(2)) {
121
125
  margin-top: 4px;
@@ -31,10 +31,11 @@ const showBothEmpty = computed(() => labels.length === 0 && annotations.length =
31
31
 
32
32
  <template>
33
33
  <SpacedRow
34
- class="metadata ppb-3"
34
+ class="metadata ppb-5"
35
35
  v-bind="$attrs"
36
36
  >
37
37
  <div
38
+ v-if="identifyingInformation?.length > 0"
38
39
  class="identifying-info"
39
40
  >
40
41
  <IdentifyingInformation :rows="identifyingInformation" />
@@ -1,14 +1,15 @@
1
1
  <template>
2
- <h1 class="title">
2
+ <div class="title">
3
3
  <slot name="default" />
4
- </h1>
4
+ </div>
5
5
  </template>
6
6
 
7
7
  <style lang="scss" scoped>
8
- h1.title {
8
+ .title {
9
9
  display: inline-block;
10
10
  align-items: center;
11
11
  display: flex;
12
12
  flex-direction: row;
13
+ font-size: 14px;
13
14
  }
14
15
  </style>
@@ -13,6 +13,7 @@ import { _CONFIG, _GRAPH, AS } from '@shell/config/query-params';
13
13
  import ButtonGroup from '@shell/components/ButtonGroup';
14
14
  import { ExtensionPoint, PanelLocation } from '@shell/core/types';
15
15
  import ExtensionPanel from '@shell/components/ExtensionPanel.vue';
16
+ import breadcrumb from '@shell/components/breadcrumb/index.vue'
16
17
 
17
18
  export interface Badge {
18
19
  color: 'bg-success' | 'bg-error' | 'bg-warning' | 'bg-info';
@@ -36,6 +37,8 @@ export interface TitleBarProps {
36
37
  showViewOptions?: boolean;
37
38
 
38
39
  onShowConfiguration?: (returnFocusSelector: string) => void;
40
+ value?: any;
41
+ parentRouteOverride?: string;
39
42
  }
40
43
 
41
44
  const showConfigurationIcon = require(`@shell/assets/images/icons/document.svg`);
@@ -43,7 +46,7 @@ const showConfigurationIcon = require(`@shell/assets/images/icons/document.svg`)
43
46
 
44
47
  <script setup lang="ts">
45
48
  const {
46
- resource, resourceTypeLabel, resourceTo, resourceName, description, badge, showViewOptions, onShowConfiguration,
49
+ parentRouteOverride, value, resource, resourceTypeLabel, resourceTo, resourceName, description, badge, showViewOptions, onShowConfiguration,
47
50
  } = defineProps<TitleBarProps>();
48
51
 
49
52
  const store = useStore();
@@ -72,6 +75,42 @@ const viewOptions = computed(() => {
72
75
  ];
73
76
  });
74
77
 
78
+ const Svg = require('~shell/assets/images/API.svg')
79
+
80
+ const parent = computed(() =>{
81
+ const displayName = value?.parentNameOverride || store.getters['type-map/labelFor'](schema);
82
+ const product = store.getters['currentProduct'].name;
83
+
84
+ const defaultLocation = {
85
+ name: 'c-cluster-product-resource',
86
+ params: {
87
+ resource: resource,
88
+ product,
89
+ }
90
+ };
91
+
92
+ const location = value?.parentLocationOverride || defaultLocation;
93
+
94
+ if (parentRouteOverride) {
95
+ location.name = parentRouteOverride;
96
+ }
97
+
98
+ const out = {
99
+ location
100
+ };
101
+
102
+ return out;
103
+ })
104
+
105
+ const menuIcon = computed(() => {
106
+ const product = store.getters['productId'];
107
+
108
+ const resources = parent?.location?.params?.resource || ''
109
+
110
+ return store.getters['type-map/groupsForVirTypes'](product, resources);
111
+ })
112
+
113
+
75
114
  watch(
76
115
  () => currentView.value,
77
116
  () => {
@@ -82,33 +121,58 @@ watch(
82
121
 
83
122
  <template>
84
123
  <div class="title-bar">
124
+ <breadcrumb :resource="resource"/>
85
125
  <Top>
86
126
  <Title class="title">
127
+ <span v-if="menuIcon && parentRouteOverride === 'account' && resource=== 'token'" class="detailIcon-span">
128
+ <img
129
+ v-if="parentRouteOverride === 'account' && resource=== 'token'"
130
+ :src="Svg"
131
+ style="margin-top: 4px; margin-left: 5px;"
132
+ >
133
+ <i
134
+ v-else
135
+ :class="'icon-'+ menuIcon + ' detailIcon'"
136
+ />
137
+ </span>
138
+ <div class="resourceTypeLabelCls">
139
+ {{ resourceTypeLabel }}名称:
140
+ </div>
141
+ <span class="resource-name masthead-resource-title">
142
+ {{ resourceName }}
143
+ </span>
144
+ <BadgeState
145
+ v-if="badge"
146
+ class="badge-state"
147
+ :color="badge.color"
148
+ :label="badge.label"
149
+ />
150
+ <span
151
+ class="valid"
152
+ >|</span>
87
153
  <TabTitle :show-child="false">
88
- {{ resourceTypeLabel }}
154
+ 返回
89
155
  </TabTitle>
90
156
  <router-link
91
157
  v-if="resourceTo"
92
158
  :to="resourceTo"
93
159
  class="resource-link"
94
160
  >
95
- {{ resourceTypeLabel }}:
161
+ 返回
96
162
  </router-link>
97
163
  <span
98
164
  v-else
99
165
  class="resource-text"
100
166
  >
101
- {{ resourceTypeLabel }}:
167
+ 返回
102
168
  </span>
103
- <span class="resource-name masthead-resource-title">
104
- {{ resourceName }}
105
- </span>
106
- <BadgeState
107
- v-if="badge"
108
- class="badge-state"
109
- :color="badge.color"
110
- :label="badge.label"
111
- />
169
+ <div
170
+ v-if="description"
171
+ style="font-size: 12px;margin-left: 16px;"
172
+ class="bottom description text-deemphasized"
173
+ >
174
+ ( {{ description }} )
175
+ </div>
112
176
  </Title>
113
177
  <div class="actions">
114
178
  <!-- Please don't expand this pattern, this was a quick fix to resolve a conflict between the new masthead and fleet. -->
@@ -134,6 +198,7 @@ watch(
134
198
  </RcButton>
135
199
  <ActionMenu
136
200
  v-if="actionMenuResource"
201
+ :showIcon="true"
137
202
  button-role="multiAction"
138
203
  :resource="actionMenuResource"
139
204
  data-testid="masthead-action-menu"
@@ -141,12 +206,6 @@ watch(
141
206
  />
142
207
  </div>
143
208
  </Top>
144
- <div
145
- v-if="description"
146
- class="bottom description text-deemphasized"
147
- >
148
- {{ description }}
149
- </div>
150
209
  <ExtensionPanel
151
210
  :resource="resource"
152
211
  :type="ExtensionPoint.PANEL"
@@ -156,12 +215,27 @@ watch(
156
215
  </template>
157
216
 
158
217
  <style lang="scss" scoped>
218
+ .detailIcon-span{
219
+ width: 24px;
220
+ height: 24px;
221
+ display: inline-block;
222
+ position: relative;
223
+ background: var(--primary);
224
+ margin-right: 10px;
225
+ }
226
+ .resourceTypeLabelCls {
227
+ font-weight: 700;
228
+ }
229
+ .valid{
230
+ color: #d7d7d7;
231
+ margin: 0px 10px;
232
+ }
159
233
  .title-bar {
160
234
  min-width: 740px;
161
235
 
162
236
  .badge-state {
163
237
  font-size: 16px;
164
- margin-left: 12px;
238
+ margin-left: 5px;
165
239
  position: relative;
166
240
  }
167
241
 
@@ -170,15 +244,20 @@ watch(
170
244
  }
171
245
 
172
246
  &:deep() button[data-testid="masthead-action-menu"] {
173
- border-radius: 4px;
174
- width: 35px;
175
- height: 40px;
176
- margin-left: 16px;
247
+ border-radius: 2px;
248
+ width: 32px;
249
+ height: 32px;
250
+ margin-left: 10px;
177
251
 
178
252
  display: inline-flex;
179
253
  flex-direction: row;
180
254
  justify-content: center;
181
255
  align-items: center;
256
+ background-color: var(--primary);
257
+
258
+ a{
259
+ color: #fff;
260
+ }
182
261
  }
183
262
 
184
263
  .description {
@@ -464,7 +464,7 @@ export default {
464
464
 
465
465
  <template>
466
466
  <Loading v-if="$fetchState.pending || notFound" />
467
- <div v-else>
467
+ <div style="padding: 20px;height: 100%;" v-else>
468
468
  <Masthead
469
469
  v-if="showMasthead"
470
470
  :resource="resourceType"
@@ -478,6 +478,8 @@ export default {
478
478
  :resource-subtype="resourceSubtype"
479
479
  :parent-route-override="parentRouteOverride"
480
480
  :store-override="storeOverride"
481
+
482
+ :isManuallyHide="false"
481
483
  >
482
484
  <!-- <DetailTop
483
485
  v-if="isView && isDetail"
@@ -2664,7 +2664,7 @@ export default {
2664
2664
  .sort-table-div{
2665
2665
  width:100%;
2666
2666
  white-space:nowrap;
2667
- overflow-x: auto;
2667
+ // overflow-x: auto;
2668
2668
  }
2669
2669
 
2670
2670
  /* 滚动阴影左边 */
@@ -389,7 +389,7 @@ export default {
389
389
  flex-direction: row;
390
390
 
391
391
  + .tab-container {
392
- border: solid thin var(--border);
392
+ // border: solid thin var(--border);
393
393
  }
394
394
 
395
395
  .tab.active {