dashboard-shell-shell 3.0.5-test.4 → 3.0.5-test.41
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/assets/brand/csp/favicon.png +0 -0
- package/assets/icons/iconfont.css +4 -1
- package/assets/images/pl/dark/logo.png +0 -0
- package/assets/styles/all.scss +23 -3
- package/assets/styles/base/_variables.scss +5 -5
- package/assets/styles/fonts/_icons.scss +3 -2
- package/assets/styles/global/_button.scss +8 -8
- package/assets/styles/global/_form.scss +1 -0
- package/assets/styles/global/_select.scss +1 -1
- package/assets/styles/global/_tooltip.scss +9 -5
- package/assets/styles/themes/_light.scss +6 -4
- package/assets/styles/vendor/vue-select.scss +2 -1
- package/assets/translations/en-us.yaml +59 -0
- package/assets/translations/zh-hans.yaml +175 -15
- package/components/ActionDropdown.vue +1 -1
- package/components/ButtonDropdown.vue +3 -1
- package/components/CodeMirror.vue +6 -4
- package/components/ContainerResourceLimit.vue +2 -2
- package/components/CopyToClipboard.vue +15 -0
- package/components/Drawer/Chrome.vue +2 -2
- package/components/Drawer/ResourceDetailDrawer/ConfigTab.vue +30 -27
- package/components/Drawer/ResourceDetailDrawer/YamlTab.vue +1 -1
- package/components/Drawer/ResourceDetailDrawer/index.vue +5 -4
- package/components/ExplorerMembers.vue +28 -4
- package/components/GlobalRoleBindings.vue +51 -112
- package/components/PodSecurityAdmission.vue +2 -2
- package/components/PromptRemove.vue +17 -1
- package/components/RelatedResources.vue +3 -0
- package/components/Resource/Detail/Metadata/IdentifyingInformation/index.vue +1 -3
- package/components/Resource/Detail/Metadata/KeyValue.vue +8 -4
- package/components/Resource/Detail/Metadata/index.vue +3 -1
- package/components/Resource/Detail/TitleBar/Title.vue +4 -3
- package/components/Resource/Detail/TitleBar/Top.vue +2 -0
- package/components/Resource/Detail/TitleBar/composables.ts +16 -1
- package/components/Resource/Detail/TitleBar/index.vue +123 -25
- package/components/ResourceDetail/Masthead/index.vue +1 -1
- package/components/ResourceDetail/Masthead/latest.vue +1 -1
- package/components/ResourceDetail/Masthead/legacy.vue +8 -7
- package/components/ResourceDetail/legacy.vue +18 -16
- package/components/ResourceList/Masthead.vue +13 -17
- package/components/ResourceTable.vue +10 -0
- package/components/SideNav.vue +21 -21
- package/components/SortableTable/THead.vue +46 -1
- package/components/SortableTable/index.vue +40 -20
- package/components/Tabbed/index.vue +6 -1
- package/components/auth/Principal.vue +10 -5
- package/components/auth/RoleDetailEdit.vue +11 -7
- package/components/breadcrumb/index.vue +119 -0
- package/components/form/ArrayList.vue +164 -147
- package/components/form/ArrayListGrouped.vue +5 -3
- package/components/form/ChangePassword.vue +1 -1
- package/components/form/Command.vue +4 -5
- package/components/form/Conditions.vue +15 -1
- package/components/form/Footer.vue +1 -0
- package/components/form/HealthCheck.vue +0 -2
- package/components/form/HookOption.vue +87 -58
- package/components/form/InputWithSelect.vue +8 -7
- package/components/form/KeyValue.vue +20 -2
- package/components/form/LabeledSelect.vue +6 -3
- package/components/form/Labels.vue +2 -2
- package/components/form/MatchExpressions.vue +4 -4
- package/components/form/Members/ClusterMembershipEditor.vue +1 -1
- package/components/form/Members/ClusterPermissionsEditor.vue +31 -28
- package/components/form/Members/MembershipEditor.vue +2 -2
- package/components/form/NameNsDescription.vue +1 -1
- package/components/form/Networking.vue +6 -9
- package/components/form/NodeAffinity.vue +29 -28
- package/components/form/PodAffinity.vue +23 -23
- package/components/form/Probe.vue +15 -11
- package/components/form/ProjectMemberEditor.vue +28 -25
- package/components/form/ResourceQuota/Namespace.vue +4 -4
- package/components/form/ResourceQuota/NamespaceRow.vue +11 -9
- package/components/form/ResourceQuota/Project.vue +4 -4
- package/components/form/ResourceQuota/ProjectRow.vue +36 -30
- package/components/form/ResourceSelector.vue +1 -1
- package/components/form/Security.vue +1 -3
- package/components/form/Select.vue +7 -1
- package/components/form/ServiceNameSelect.vue +2 -5
- package/components/form/ServicePorts.vue +149 -75
- package/components/form/Taints.vue +2 -1
- package/components/form/Tolerations.vue +13 -9
- package/components/form/ValueFromResource.vue +110 -96
- package/components/form/WorkloadPorts.vue +143 -123
- package/components/formatter/WorkloadHealthScale.vue +4 -3
- package/components/nav/Group.vue +6 -0
- package/components/nav/Header.vue +7 -4
- package/components/nav/NamespaceFilter.vue +15 -21
- package/components/nav/TopLevelMenu.vue +99 -125
- package/components/nav/Type.vue +11 -3
- package/config/menuRouteMap.js +10 -0
- package/config/product/explorer.js +31 -9
- package/config/product/manager.js +28 -17
- package/config/router/navigation-guards/index.js +61 -3
- package/detail/node.vue +28 -23
- package/dialog/AddCustomBadgeDialog.vue +17 -9
- package/edit/autoscaling.horizontalpodautoscaler/external-metric.vue +1 -1
- package/edit/autoscaling.horizontalpodautoscaler/hpa-scaling-rule.vue +9 -6
- package/edit/autoscaling.horizontalpodautoscaler/index.vue +3 -1
- package/edit/autoscaling.horizontalpodautoscaler/metric-identifier.vue +2 -2
- package/edit/autoscaling.horizontalpodautoscaler/metric-object-reference.vue +7 -5
- package/edit/autoscaling.horizontalpodautoscaler/metric-target.vue +5 -3
- package/edit/autoscaling.horizontalpodautoscaler/metrics-row.vue +2 -2
- package/edit/autoscaling.horizontalpodautoscaler/object-metric.vue +2 -2
- package/edit/autoscaling.horizontalpodautoscaler/pod-metric.vue +1 -1
- package/edit/autoscaling.horizontalpodautoscaler/resource-metric.vue +2 -2
- package/edit/configmap.vue +4 -0
- package/edit/networking.k8s.io.ingress/Certificate.vue +14 -5
- package/edit/networking.k8s.io.ingress/DefaultBackend.vue +2 -2
- package/edit/networking.k8s.io.ingress/Rule.vue +5 -11
- package/edit/networking.k8s.io.ingress/RulePath.vue +105 -96
- package/edit/networking.k8s.io.networkpolicy/PolicyRule.vue +3 -3
- package/edit/networking.k8s.io.networkpolicy/PolicyRulePort.vue +4 -2
- package/edit/networking.k8s.io.networkpolicy/PolicyRuleTarget.vue +12 -11
- package/edit/networking.k8s.io.networkpolicy/index.vue +1 -1
- package/edit/persistentvolume/index.vue +3 -1
- package/edit/persistentvolumeclaim.vue +2 -0
- package/edit/secret/index.vue +2 -2
- package/edit/service.vue +4 -1
- package/edit/storage.k8s.io.storageclass/index.vue +10 -8
- package/edit/storage.k8s.io.storageclass/provisioners/kubernetes.io/aws-ebs.vue +34 -27
- package/edit/storage.k8s.io.storageclass/provisioners/kubernetes.io/gce-pd.vue +15 -13
- package/edit/storage.k8s.io.storageclass/provisioners/kubernetes.io/vsphere-volume.vue +41 -39
- package/edit/workload/Job.vue +31 -34
- package/edit/workload/Upgrading.vue +5 -5
- package/edit/workload/index.vue +22 -18
- package/edit/workload/storage/Mount.vue +1 -0
- package/edit/workload/storage/awsElasticBlockStore.vue +9 -7
- package/edit/workload/storage/azureDisk.vue +14 -10
- package/edit/workload/storage/azureFile.vue +9 -7
- package/edit/workload/storage/csi/index.vue +6 -9
- package/edit/workload/storage/emptyDir.vue +7 -5
- package/edit/workload/storage/gcePersistentDisk.vue +9 -7
- package/edit/workload/storage/hostPath.vue +7 -5
- package/edit/workload/storage/nfs.vue +8 -6
- package/edit/workload/storage/persistentVolumeClaim/index.vue +12 -10
- package/edit/workload/storage/persistentVolumeClaim/persistentvolumeclaim.vue +20 -15
- package/edit/workload/storage/secret.vue +9 -6
- package/edit/workload/storage/vsphereVolume.vue +11 -7
- package/initialize/app-extended.js +7 -1
- package/models/provisioning.cattle.io.cluster.js +19 -18
- package/package.json +1 -1
- package/pages/account/index.vue +90 -118
- package/pages/account/pri.vue +229 -0
- package/pages/auth/login.vue +6 -1
- package/pages/auth/setup.vue +36 -17
- package/pages/c/_cluster/_product/namespaces.vue +1 -1
- package/pages/c/_cluster/auth/roles/index.vue +38 -5
- package/pages/c/_cluster/explorer/ConfigBadge.vue +1 -1
- package/pages/c/_cluster/explorer/tools/index.vue +6 -6
- package/pages/home.vue +3 -4
- package/pkg/tsconfig.json +9 -9
- package/pkg/vue.config.js +1 -1
- package/plugins/dashboard-store/resource-class.js +28 -27
- package/rancher-components/BadgeState/BadgeState.vue +33 -52
- package/rancher-components/Banner/Banner.vue +12 -2
- package/rancher-components/Form/Radio/RadioGroup.vue +9 -1
- package/rancher-components/LabeledTooltip/LabeledTooltip.vue +31 -2
- package/rancher-components/RcDropdown/RcDropdownMenu.vue +8 -7
- package/scripts/publish-shell.sh +1 -1
- package/store/i18n.js +4 -0
- package/store/type-map.js +1 -3
- package/types/shell/index.d.ts +4 -30
- package/utils/error.js +3 -1
- package/utils/errorTranslate.json +416 -2
- package/vue.config.js +1 -1
package/pages/auth/setup.vue
CHANGED
|
@@ -21,6 +21,7 @@ import FormValidation from '@shell/mixins/form-validation';
|
|
|
21
21
|
import isUrl from 'is-url';
|
|
22
22
|
import { isLocalhost } from '@shell/utils/validators/setting';
|
|
23
23
|
import Loading from '@shell/components/Loading';
|
|
24
|
+
import { copyTextToClipboard } from '@shell/utils/clipboard';
|
|
24
25
|
|
|
25
26
|
const calcIsFirstLogin = (store) => {
|
|
26
27
|
const firstLoginSetting = store.getters['management/byId'](MANAGEMENT.SETTING, SETTING.FIRST_LOGIN);
|
|
@@ -149,7 +150,7 @@ export default {
|
|
|
149
150
|
this['isFirstLogin'] = isFirstLogin;
|
|
150
151
|
this['mustChangePassword'] = mustChangePassword;
|
|
151
152
|
// this['current'] = current;
|
|
152
|
-
this['current'] = 'admin';
|
|
153
|
+
this['current'] = current || 'admin';
|
|
153
154
|
this['v3User'] = v3User;
|
|
154
155
|
this['serverUrl'] = serverUrl;
|
|
155
156
|
this['mcmEnabled'] = mcmEnabled;
|
|
@@ -259,6 +260,14 @@ export default {
|
|
|
259
260
|
this.$router.replace('/');
|
|
260
261
|
},
|
|
261
262
|
|
|
263
|
+
copyPassword(val) {
|
|
264
|
+
copyTextToClipboard(val).then(() => {
|
|
265
|
+
console.log('复制成功')
|
|
266
|
+
}).catch(() => {
|
|
267
|
+
console.log('复制失败')
|
|
268
|
+
});
|
|
269
|
+
},
|
|
270
|
+
|
|
262
271
|
onServerUrlChange(value) {
|
|
263
272
|
this.serverUrl = value.trim();
|
|
264
273
|
},
|
|
@@ -324,13 +333,14 @@ export default {
|
|
|
324
333
|
>
|
|
325
334
|
<div class="mb-20">
|
|
326
335
|
<RadioGroup
|
|
336
|
+
class="setupRadioGroupCls"
|
|
327
337
|
v-model:value="useRandom"
|
|
328
338
|
data-testid="setup-password-mode"
|
|
329
339
|
name="password-mode"
|
|
330
340
|
:options="passwordOptions"
|
|
331
341
|
/>
|
|
332
342
|
</div>
|
|
333
|
-
<div class="mb-20">
|
|
343
|
+
<div class="setup_radom-password mb-20">
|
|
334
344
|
<LabeledInput
|
|
335
345
|
v-if="useRandom"
|
|
336
346
|
ref="password"
|
|
@@ -347,13 +357,9 @@ export default {
|
|
|
347
357
|
>
|
|
348
358
|
<div
|
|
349
359
|
class="addon"
|
|
350
|
-
style="padding:
|
|
360
|
+
style="padding: 4px 0px 0px;"
|
|
351
361
|
>
|
|
352
|
-
<
|
|
353
|
-
:aria-label="t('setup.copyRandom')"
|
|
354
|
-
:text="password"
|
|
355
|
-
class="btn-sm"
|
|
356
|
-
/>
|
|
362
|
+
<a @click="copyPassword(password)" href="javascript:;">复制</a>
|
|
357
363
|
</div>
|
|
358
364
|
</template>
|
|
359
365
|
</LabeledInput>
|
|
@@ -367,15 +373,17 @@ export default {
|
|
|
367
373
|
:required="true"
|
|
368
374
|
/>
|
|
369
375
|
</div>
|
|
370
|
-
<
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
376
|
+
<div class="setup_radom-password">
|
|
377
|
+
<Password
|
|
378
|
+
v-show="!useRandom"
|
|
379
|
+
v-model:value.trim="confirm"
|
|
380
|
+
autocomplete="new-password"
|
|
381
|
+
data-testid="setup-password-confirm"
|
|
382
|
+
class="setup-password"
|
|
383
|
+
:label="t('setup.confirmPassword')"
|
|
384
|
+
:required="true"
|
|
385
|
+
/>
|
|
386
|
+
</div>
|
|
379
387
|
</template>
|
|
380
388
|
|
|
381
389
|
<template v-if="isFirstLogin">
|
|
@@ -467,6 +475,16 @@ export default {
|
|
|
467
475
|
</template>
|
|
468
476
|
|
|
469
477
|
<style lang="scss" scoped>
|
|
478
|
+
.setup_radom-password {
|
|
479
|
+
:deep(.label-input-all) LABEL {
|
|
480
|
+
color: #fff;
|
|
481
|
+
}
|
|
482
|
+
}
|
|
483
|
+
.setupRadioGroupCls {
|
|
484
|
+
:deep(.radio-label) {
|
|
485
|
+
color: #fff;
|
|
486
|
+
}
|
|
487
|
+
}
|
|
470
488
|
.principal {
|
|
471
489
|
display: block;
|
|
472
490
|
background: var(--box-bg);
|
|
@@ -538,6 +556,7 @@ export default {
|
|
|
538
556
|
}
|
|
539
557
|
|
|
540
558
|
.setup-title {
|
|
559
|
+
color: #fff;
|
|
541
560
|
:deep() code {
|
|
542
561
|
font-size: 12px;
|
|
543
562
|
padding: 0;
|
|
@@ -162,7 +162,7 @@ export default {
|
|
|
162
162
|
</h1>
|
|
163
163
|
<div style="margin: 20px 0;">支持管理员创建与管理不同角色,每个角色可预设特定权限集合,可简化用户权限分配流程,提升权限管理的灵活性与安全性。</div>
|
|
164
164
|
</div>
|
|
165
|
-
<div class="actions-container actions-container-box">
|
|
165
|
+
<!-- <div class="actions-container actions-container-box">
|
|
166
166
|
<div class="actions">
|
|
167
167
|
<router-link
|
|
168
168
|
v-if="canCreate"
|
|
@@ -172,7 +172,7 @@ export default {
|
|
|
172
172
|
{{ createLabel }}
|
|
173
173
|
</router-link>
|
|
174
174
|
</div>
|
|
175
|
-
</div>
|
|
175
|
+
</div> -->
|
|
176
176
|
</header>
|
|
177
177
|
<Tabbed>
|
|
178
178
|
<Tab
|
|
@@ -184,7 +184,18 @@ export default {
|
|
|
184
184
|
<ResourceTable
|
|
185
185
|
:schema="tabs[GLOBAL].schema"
|
|
186
186
|
:rows="globalResources"
|
|
187
|
-
|
|
187
|
+
>
|
|
188
|
+
<template #header-right>
|
|
189
|
+
<router-link
|
|
190
|
+
v-if="canCreate"
|
|
191
|
+
:to="createLocation"
|
|
192
|
+
style="margin-right: 10px;"
|
|
193
|
+
class="btn role-primary"
|
|
194
|
+
>
|
|
195
|
+
{{ createLabel }}
|
|
196
|
+
</router-link>
|
|
197
|
+
</template>
|
|
198
|
+
</ResourceTable>
|
|
188
199
|
</Tab>
|
|
189
200
|
|
|
190
201
|
<Tab
|
|
@@ -197,7 +208,18 @@ export default {
|
|
|
197
208
|
:schema="tabs[CLUSTER].schema"
|
|
198
209
|
:headers="tabs[CLUSTER].headers"
|
|
199
210
|
:rows="clusterResources"
|
|
200
|
-
|
|
211
|
+
>
|
|
212
|
+
<template #header-right>
|
|
213
|
+
<router-link
|
|
214
|
+
v-if="canCreate"
|
|
215
|
+
:to="createLocation"
|
|
216
|
+
style="margin-right: 10px;"
|
|
217
|
+
class="btn role-primary"
|
|
218
|
+
>
|
|
219
|
+
{{ createLabel }}
|
|
220
|
+
</router-link>
|
|
221
|
+
</template>
|
|
222
|
+
</ResourceTable>
|
|
201
223
|
</Tab>
|
|
202
224
|
|
|
203
225
|
<Tab
|
|
@@ -210,7 +232,18 @@ export default {
|
|
|
210
232
|
:schema="tabs[PROJECT].schema"
|
|
211
233
|
:headers="tabs[PROJECT].headers"
|
|
212
234
|
:rows="namespaceResources"
|
|
213
|
-
|
|
235
|
+
>
|
|
236
|
+
<template #header-right>
|
|
237
|
+
<router-link
|
|
238
|
+
v-if="canCreate"
|
|
239
|
+
:to="createLocation"
|
|
240
|
+
style="margin-right: 10px;"
|
|
241
|
+
class="btn role-primary"
|
|
242
|
+
>
|
|
243
|
+
{{ createLabel }}
|
|
244
|
+
</router-link>
|
|
245
|
+
</template>
|
|
246
|
+
</ResourceTable>
|
|
214
247
|
</Tab>
|
|
215
248
|
</Tabbed>
|
|
216
249
|
</div>
|
|
@@ -230,7 +230,7 @@ export default {
|
|
|
230
230
|
|
|
231
231
|
.name {
|
|
232
232
|
white-space: nowrap;
|
|
233
|
-
overflow: hidden;
|
|
233
|
+
// overflow: hidden;
|
|
234
234
|
text-overflow: ellipsis;
|
|
235
235
|
margin: 0;
|
|
236
236
|
}
|
|
@@ -249,7 +249,7 @@ export default {
|
|
|
249
249
|
.version {
|
|
250
250
|
color: var(--muted);
|
|
251
251
|
white-space: nowrap;
|
|
252
|
-
overflow: hidden;
|
|
252
|
+
// overflow: hidden;
|
|
253
253
|
text-overflow: ellipsis;
|
|
254
254
|
font-size: 0.9em;
|
|
255
255
|
margin-top: 4px;
|
|
@@ -262,10 +262,10 @@ export default {
|
|
|
262
262
|
.description-content {
|
|
263
263
|
display: -webkit-box;
|
|
264
264
|
-webkit-box-orient: vertical;
|
|
265
|
-
-webkit-line-clamp: 3;
|
|
266
|
-
line-clamp: 3;
|
|
267
|
-
overflow: hidden;
|
|
268
|
-
text-overflow: ellipsis;
|
|
265
|
+
// -webkit-line-clamp: 3;
|
|
266
|
+
// line-clamp: 3;
|
|
267
|
+
// overflow: hidden;
|
|
268
|
+
// text-overflow: ellipsis;
|
|
269
269
|
color: var(--text-muted);
|
|
270
270
|
}
|
|
271
271
|
|
package/pages/home.vue
CHANGED
|
@@ -486,7 +486,6 @@ export default defineComponent({
|
|
|
486
486
|
|
|
487
487
|
<!-- 页签标题组件,不显示子页面标题和面包屑 -->
|
|
488
488
|
<TabTitle
|
|
489
|
-
v-if="topLevelPermissionsVis"
|
|
490
489
|
:show-child="false"
|
|
491
490
|
:breadcrumb="false"
|
|
492
491
|
>
|
|
@@ -496,14 +495,14 @@ export default defineComponent({
|
|
|
496
495
|
</TabTitle>
|
|
497
496
|
|
|
498
497
|
<!-- 首页欢迎横幅 -->
|
|
499
|
-
<BannerGraphic
|
|
498
|
+
<!-- <BannerGraphic
|
|
500
499
|
v-if="topLevelPermissionsVis"
|
|
501
500
|
:small="true"
|
|
502
501
|
:title="t('landing.welcomeToRancher', {vendor})"
|
|
503
502
|
:pref="HIDE_HOME_PAGE_CARDS"
|
|
504
503
|
pref-key="welcomeBanner"
|
|
505
504
|
data-testid="home-banner-graphic"
|
|
506
|
-
/>
|
|
505
|
+
/> -->
|
|
507
506
|
<IndentedPanel class="mt-20 mb-20">
|
|
508
507
|
|
|
509
508
|
<!-- 主面板布局 -->
|
|
@@ -548,7 +547,7 @@ export default defineComponent({
|
|
|
548
547
|
v-if="canCreateCluster || !!provClusterSchema"
|
|
549
548
|
#header-right
|
|
550
549
|
>
|
|
551
|
-
<div
|
|
550
|
+
<div class="table-heading">
|
|
552
551
|
<router-link
|
|
553
552
|
v-if="!!provClusterSchema"
|
|
554
553
|
:to="manageLocation"
|
package/pkg/tsconfig.json
CHANGED
|
@@ -27,25 +27,25 @@
|
|
|
27
27
|
],
|
|
28
28
|
"paths": {
|
|
29
29
|
"@shell/core/*": [
|
|
30
|
-
"../../node_modules
|
|
30
|
+
"../../node_modules/dashboard-shell-shell/core/*"
|
|
31
31
|
],
|
|
32
32
|
"@shell/config/*": [
|
|
33
|
-
"../../node_modules
|
|
33
|
+
"../../node_modules/dashboard-shell-shell/config/*"
|
|
34
34
|
],
|
|
35
35
|
"@shell/store/*": [
|
|
36
|
-
"../../node_modules
|
|
36
|
+
"../../node_modules/dashboard-shell-shell/store/*"
|
|
37
37
|
],
|
|
38
38
|
"@shell/plugins/*": [
|
|
39
|
-
"../../node_modules
|
|
39
|
+
"../../node_modules/dashboard-shell-shell/plugins/*"
|
|
40
40
|
],
|
|
41
41
|
"@shell/utils/*": [
|
|
42
|
-
"../../node_modules
|
|
42
|
+
"../../node_modules/dashboard-shell-shell/utils/*"
|
|
43
43
|
],
|
|
44
44
|
"@shell/models/*": [
|
|
45
|
-
"../../node_modules
|
|
45
|
+
"../../node_modules/dashboard-shell-shell/models/*"
|
|
46
46
|
],
|
|
47
47
|
"@shell/mixins/*": [
|
|
48
|
-
"../../node_modules
|
|
48
|
+
"../../node_modules/dashboard-shell-shell/mixins/*"
|
|
49
49
|
],
|
|
50
50
|
"@pkg/*": [
|
|
51
51
|
"./*"
|
|
@@ -56,8 +56,8 @@
|
|
|
56
56
|
"**/*.ts",
|
|
57
57
|
"**/*.tsx",
|
|
58
58
|
"**/*.vue",
|
|
59
|
-
"../../node_modules
|
|
60
|
-
"../../node_modules
|
|
59
|
+
"../../node_modules/dashboard-shell-shell/types/*.d.ts",
|
|
60
|
+
"../../node_modules/dashboard-shell-shell/core/types.ts"
|
|
61
61
|
],
|
|
62
62
|
"exclude": [
|
|
63
63
|
"node_modules"
|
package/pkg/vue.config.js
CHANGED
|
@@ -117,7 +117,7 @@ module.exports = function(dir) {
|
|
|
117
117
|
if (p.use) {
|
|
118
118
|
p.use.forEach((u) => {
|
|
119
119
|
if (u.loader.includes('babel-loader')) {
|
|
120
|
-
p.exclude = /node_modules\/(
|
|
120
|
+
p.exclude = /node_modules\/(?!dashboard-shell-shell\/).*/;
|
|
121
121
|
}
|
|
122
122
|
});
|
|
123
123
|
}
|
|
@@ -913,42 +913,42 @@ export default class Resource {
|
|
|
913
913
|
{
|
|
914
914
|
action: this.canUpdate ? 'goToEdit' : 'goToViewConfig',
|
|
915
915
|
label: this.t(this.canUpdate ? 'action.edit' : 'action.view'),
|
|
916
|
-
icon: 'icon icon-edit',
|
|
916
|
+
// icon: 'icon icon-edit',
|
|
917
917
|
enabled: this.canCustomEdit,
|
|
918
918
|
},
|
|
919
|
-
{
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
},
|
|
919
|
+
// {
|
|
920
|
+
// action: this.canEditYaml ? 'goToEditYaml' : 'goToViewYaml',
|
|
921
|
+
// label: this.t(this.canEditYaml ? 'action.editYaml' : 'action.viewYaml'),
|
|
922
|
+
// icon: 'icon icon-file',
|
|
923
|
+
// enabled: this.canYaml,
|
|
924
|
+
// },
|
|
925
925
|
{
|
|
926
926
|
action: (this.canCustomEdit ? 'goToClone' : 'cloneYaml'),
|
|
927
927
|
label: this.t('action.clone'),
|
|
928
|
-
icon: 'icon icon-copy',
|
|
929
|
-
enabled: this.canClone && this.canCreate && (this.canCustomEdit || this.canYaml),
|
|
930
|
-
},
|
|
931
|
-
{ divider: true },
|
|
932
|
-
{
|
|
933
|
-
action: 'download',
|
|
934
|
-
label: this.t('action.download'),
|
|
935
|
-
icon: 'icon icon-download',
|
|
936
|
-
bulkable: true,
|
|
937
|
-
bulkAction: 'downloadBulk',
|
|
938
|
-
enabled: this.canYaml,
|
|
939
|
-
weight: -9,
|
|
940
|
-
},
|
|
941
|
-
{
|
|
942
|
-
action: 'viewInApi',
|
|
943
|
-
label: this.t('action.viewInApi'),
|
|
944
|
-
icon: 'icon icon-external-link',
|
|
945
|
-
enabled: this.canViewInApi,
|
|
928
|
+
// icon: 'icon icon-copy',
|
|
929
|
+
enabled: this.canClone && this.canCreate && (this.canCustomEdit || this.canYaml)&& this.schema.id!=='event',
|
|
946
930
|
},
|
|
931
|
+
// { divider: true },
|
|
932
|
+
// {
|
|
933
|
+
// action: 'download',
|
|
934
|
+
// label: this.t('action.download'),
|
|
935
|
+
// icon: 'icon icon-download',
|
|
936
|
+
// bulkable: true,
|
|
937
|
+
// bulkAction: 'downloadBulk',
|
|
938
|
+
// enabled: this.canYaml,
|
|
939
|
+
// weight: -9,
|
|
940
|
+
// },
|
|
941
|
+
// {
|
|
942
|
+
// action: 'viewInApi',
|
|
943
|
+
// label: this.t('action.viewInApi'),
|
|
944
|
+
// icon: 'icon icon-external-link',
|
|
945
|
+
// enabled: this.canViewInApi,
|
|
946
|
+
// },
|
|
947
947
|
{
|
|
948
948
|
action: 'promptRemove',
|
|
949
949
|
altAction: 'remove',
|
|
950
950
|
label: this.t('action.remove'),
|
|
951
|
-
icon: 'icon icon-trash',
|
|
951
|
+
// icon: 'icon icon-trash',
|
|
952
952
|
bulkable: true,
|
|
953
953
|
enabled: this.canDelete,
|
|
954
954
|
bulkAction: 'promptRemove',
|
|
@@ -1322,7 +1322,8 @@ export default class Resource {
|
|
|
1322
1322
|
}
|
|
1323
1323
|
|
|
1324
1324
|
get detailLocation() {
|
|
1325
|
-
|
|
1325
|
+
let location = this._detailLocation;
|
|
1326
|
+
return location;
|
|
1326
1327
|
}
|
|
1327
1328
|
|
|
1328
1329
|
goToDetail() {
|
|
@@ -63,60 +63,41 @@ export default defineComponent({
|
|
|
63
63
|
</script>
|
|
64
64
|
|
|
65
65
|
<template>
|
|
66
|
-
<
|
|
67
|
-
<
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
/>{{ msg }}
|
|
72
|
-
</span>
|
|
66
|
+
<div style="display: flex;flex-direction: row;align-items: center;font-size: 12px;">
|
|
67
|
+
<div :class="{ [bg]: true }"></div>
|
|
68
|
+
<span style="margin-left: 5px;">{{ msg }}</span>
|
|
69
|
+
|
|
70
|
+
</div>
|
|
73
71
|
</template>
|
|
74
|
-
|
|
75
72
|
<style lang="scss" scoped>
|
|
76
|
-
.
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
border:
|
|
81
|
-
border-radius: 20px;
|
|
82
|
-
|
|
83
|
-
&.bg-info {
|
|
84
|
-
border-color: var(--info);
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
&.bg-error {
|
|
88
|
-
border-color: var(--error);
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
&.bg-warning {
|
|
92
|
-
border-color: var(--warning);
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
// Successful states are de-emphasized by using [text-]color instead of background-color
|
|
96
|
-
&.bg-success {
|
|
97
|
-
color: var(--success);
|
|
98
|
-
background: transparent;
|
|
99
|
-
border-color: var(--success);
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
// Added badge-disabled instead of bg-disabled since bg-disabled is used in other places with !important styling, an investigation is needed to make the naming consistent
|
|
103
|
-
&.badge-disabled {
|
|
104
|
-
color: var(--badge-state-disabled-text);
|
|
105
|
-
background-color: var( --badge-state-disabled-bg);
|
|
106
|
-
border: 1px solid var(--badge-state-disabled-border);
|
|
107
|
-
}
|
|
73
|
+
.bg-error {
|
|
74
|
+
width: 10px; /* 圆点的宽度 */
|
|
75
|
+
height: 10px; /* 圆点的高度 */
|
|
76
|
+
background-color: #DD0C17; /* 圆点的颜色 */
|
|
77
|
+
border-radius: 50%; /* 设置为圆形 */
|
|
108
78
|
}
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
79
|
+
.bg-darker {
|
|
80
|
+
width: 10px; /* 圆点的宽度 */
|
|
81
|
+
height: 10px; /* 圆点的高度 */
|
|
82
|
+
background-color: #DD0C17; /* 圆点的颜色 */
|
|
83
|
+
border-radius: 50%; /* 设置为圆形 */
|
|
84
|
+
}
|
|
85
|
+
.bg-success {
|
|
86
|
+
width: 10px; /* 圆点的宽度 */
|
|
87
|
+
height: 10px; /* 圆点的高度 */
|
|
88
|
+
background-color: #95F204 !important; /* 圆点的颜色 */
|
|
89
|
+
border-radius: 50%; /* 设置为圆形 */
|
|
90
|
+
}
|
|
91
|
+
.bg-warning {
|
|
92
|
+
width: 10px; /* 圆点的宽度 */
|
|
93
|
+
height: 10px; /* 圆点的高度 */
|
|
94
|
+
background-color: #DAC342; /* 圆点的颜色 */
|
|
95
|
+
border-radius: 50%; /* 设置为圆形 */
|
|
96
|
+
}
|
|
97
|
+
.bg-info {
|
|
98
|
+
width: 10px; /* 圆点的宽度 */
|
|
99
|
+
height: 10px; /* 圆点的高度 */
|
|
100
|
+
background-color: #1890FF; /* 圆点的颜色 */
|
|
101
|
+
border-radius: 50%; /* 设置为圆形 */
|
|
121
102
|
}
|
|
122
103
|
</style>
|
|
@@ -78,7 +78,14 @@ export default defineComponent({
|
|
|
78
78
|
* Return message text as label.
|
|
79
79
|
*/
|
|
80
80
|
messageLabel(): string | void {
|
|
81
|
-
|
|
81
|
+
|
|
82
|
+
let labelStr = this.label
|
|
83
|
+
|
|
84
|
+
if (labelStr === 'waiting for api to be available') {
|
|
85
|
+
labelStr = '等待api可用'
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
return !(typeof labelStr === 'string') ? stringify(labelStr) : undefined;
|
|
82
89
|
},
|
|
83
90
|
},
|
|
84
91
|
methods: { nlToBr }
|
|
@@ -164,6 +171,7 @@ $icon-size: 24px;
|
|
|
164
171
|
margin: 0px 0px 20px 0px;
|
|
165
172
|
position: relative;
|
|
166
173
|
width: 100%;
|
|
174
|
+
min-height: 32px;
|
|
167
175
|
color: var(--body-text);
|
|
168
176
|
|
|
169
177
|
&__icon {
|
|
@@ -201,13 +209,15 @@ $icon-size: 24px;
|
|
|
201
209
|
}
|
|
202
210
|
|
|
203
211
|
&__content {
|
|
204
|
-
padding:
|
|
212
|
+
padding: 2px 10px;
|
|
205
213
|
transition: all 0.2s ease;
|
|
206
214
|
line-height: 12px;
|
|
207
215
|
width: 100%;
|
|
208
216
|
border-left: solid $left-border-size transparent;
|
|
209
217
|
display: flex;
|
|
210
218
|
gap: 3px;
|
|
219
|
+
min-height: 32px;
|
|
220
|
+
align-items: center;
|
|
211
221
|
word-wrap:break-word;
|
|
212
222
|
word-break:break-all;
|
|
213
223
|
|
|
@@ -102,6 +102,11 @@ export default defineComponent({
|
|
|
102
102
|
row: {
|
|
103
103
|
type: Boolean,
|
|
104
104
|
default: false
|
|
105
|
+
},
|
|
106
|
+
|
|
107
|
+
flexDirection: {
|
|
108
|
+
type: String,
|
|
109
|
+
default: 'row'
|
|
105
110
|
}
|
|
106
111
|
},
|
|
107
112
|
|
|
@@ -274,7 +279,7 @@ export default defineComponent({
|
|
|
274
279
|
:aria-describedby="radioGroupAriaDescribedBy"
|
|
275
280
|
:aria-activedescendant="ariaActiveDescendant"
|
|
276
281
|
class="radio-group"
|
|
277
|
-
:class="{'row':row}"
|
|
282
|
+
:class="{'row':row, 'flexDirection': flexDirection === 'column'}"
|
|
278
283
|
:tabindex="isDisabled ? -1 : 0"
|
|
279
284
|
:aria-disabled="isDisabled"
|
|
280
285
|
@keydown.down.prevent.stop="clickNext(1)"
|
|
@@ -312,6 +317,9 @@ export default defineComponent({
|
|
|
312
317
|
</template>
|
|
313
318
|
|
|
314
319
|
<style lang='scss'>
|
|
320
|
+
.flexDirection {
|
|
321
|
+
flex-direction: column;
|
|
322
|
+
}
|
|
315
323
|
.radio-group {
|
|
316
324
|
&:focus, &:focus-visible {
|
|
317
325
|
border: none;
|
|
@@ -123,8 +123,8 @@ export default defineComponent({
|
|
|
123
123
|
&.null {
|
|
124
124
|
|
|
125
125
|
.status-icon {
|
|
126
|
-
top:
|
|
127
|
-
right:
|
|
126
|
+
top: 8px !important;
|
|
127
|
+
right: 25px !important;
|
|
128
128
|
}
|
|
129
129
|
}
|
|
130
130
|
|
|
@@ -146,6 +146,35 @@ export default defineComponent({
|
|
|
146
146
|
}
|
|
147
147
|
}
|
|
148
148
|
|
|
149
|
+
.labeled-select{
|
|
150
|
+
.labeled-tooltip{
|
|
151
|
+
&.null {
|
|
152
|
+
.status-icon {
|
|
153
|
+
top: 10px !important;
|
|
154
|
+
right: 25px !important;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
&.error {
|
|
159
|
+
|
|
160
|
+
.status-icon {
|
|
161
|
+
top: 9px !important;
|
|
162
|
+
right: 20px;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
.labeled-input{
|
|
168
|
+
.labeled-tooltip{
|
|
169
|
+
&.null {
|
|
170
|
+
.status-icon {
|
|
171
|
+
top: 10px !important;
|
|
172
|
+
right: 10px !important;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
|
|
149
178
|
// Ensure code blocks inside tootips don't look awful
|
|
150
179
|
.v-popper__popper.v-popper--theme-tooltip {
|
|
151
180
|
.v-popper__inner {
|
|
@@ -33,10 +33,10 @@ const hasOptions = (options: DropdownOption[]) => {
|
|
|
33
33
|
:data-testid="dataTestid"
|
|
34
34
|
:aria-label="buttonAriaLabel"
|
|
35
35
|
>
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
36
|
+
<div v-if="showIcon">
|
|
37
|
+
<i data-v-5db2c2c7="" class="icon icon-actions" alt="More actions icon"></i>
|
|
38
|
+
</div>
|
|
39
|
+
<a v-else href="javascript:;">操作</a>
|
|
40
40
|
</rc-dropdown-trigger>
|
|
41
41
|
<template #dropdownCollection>
|
|
42
42
|
<template
|
|
@@ -58,15 +58,16 @@ const hasOptions = (options: DropdownOption[]) => {
|
|
|
58
58
|
</template> -->
|
|
59
59
|
{{ a.label }}
|
|
60
60
|
</rc-dropdown-item>
|
|
61
|
-
<rc-dropdown-separator
|
|
61
|
+
<!-- <rc-dropdown-separator
|
|
62
62
|
v-else
|
|
63
|
-
/>
|
|
63
|
+
/> -->
|
|
64
64
|
</template>
|
|
65
65
|
<rc-dropdown-item
|
|
66
66
|
v-if="!hasOptions(options)"
|
|
67
67
|
disabled
|
|
68
68
|
>
|
|
69
|
-
|
|
69
|
+
<!-- No actions available -->
|
|
70
|
+
暂无可执行的操作。
|
|
70
71
|
</rc-dropdown-item>
|
|
71
72
|
</template>
|
|
72
73
|
</rc-dropdown>
|