dashboard-shell-shell 3.0.5-test.9 → 3.0.5-tsh.2
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 +2 -2
- package/assets/styles/fonts/_icons.scss +3 -2
- package/assets/styles/global/_button.scss +1 -1
- package/assets/styles/global/_form.scss +1 -0
- package/assets/styles/global/_select.scss +1 -1
- package/assets/styles/global/_tooltip.scss +5 -1
- package/assets/styles/themes/_light.scss +3 -3
- package/assets/styles/vendor/vue-select.scss +2 -1
- package/assets/translations/en-us.yaml +60 -0
- package/assets/translations/zh-hans.yaml +164 -21
- package/components/ButtonDropdown.vue +3 -1
- package/components/ClusterIconMenu.vue +1 -1
- package/components/CodeMirror.vue +6 -4
- package/components/ConsumptionGauge.vue +1 -1
- package/components/ContainerResourceLimit.vue +2 -2
- package/components/CruResource.vue +3 -2
- package/components/Drawer/ResourceDetailDrawer/ConfigTab.vue +22 -19
- package/components/Drawer/ResourceDetailDrawer/index.vue +3 -3
- package/components/ExplorerMembers.vue +10 -1
- package/components/GlobalRoleBindings.vue +52 -112
- package/components/PodSecurityAdmission.vue +1 -1
- package/components/PromptRemove.vue +23 -1
- package/components/RelatedResources.vue +3 -0
- package/components/Resource/Detail/TitleBar/composables.ts +16 -1
- package/components/Resource/Detail/TitleBar/index.vue +37 -24
- 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 +15 -15
- package/components/ResourceList/Masthead.vue +11 -15
- package/components/ResourceTable.vue +16 -0
- package/components/SideNav.vue +21 -21
- package/components/SingleClusterInfo.vue +2 -1
- package/components/SortableTable/THead.vue +46 -1
- package/components/SortableTable/index.vue +54 -18
- package/components/Tabbed/index.vue +6 -1
- package/components/auth/Principal.vue +16 -8
- package/components/auth/RoleDetailEdit.vue +11 -7
- package/components/breadcrumb/index.vue +13 -210
- package/components/form/ArrayList.vue +164 -147
- package/components/form/ArrayListGrouped.vue +5 -3
- package/components/form/ChangePassword.vue +1 -1
- package/components/form/ClusterAppearance.vue +4 -3
- 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 +3 -1
- 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 +3 -3
- package/components/form/Members/ProjectMembershipEditor.vue +1 -1
- package/components/form/NameNsDescription.vue +4 -2
- 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/Tolerations.vue +13 -9
- package/components/form/ValueFromResource.vue +110 -96
- package/components/formatter/WorkloadHealthScale.vue +4 -3
- package/components/nav/Group.vue +6 -0
- package/components/nav/Header.vue +17 -137
- package/components/nav/NamespaceFilter.vue +14 -19
- 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 +32 -10
- 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/dialog/RollbackWorkloadDialog.vue +1 -1
- 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/monitoring.coreos.com.alertmanagerconfig/receiverConfig.vue +32 -8
- package/edit/monitoring.coreos.com.alertmanagerconfig/types/dingding.vue +32 -0
- package/edit/monitoring.coreos.com.alertmanagerconfig/types/message.vue +52 -0
- package/edit/monitoring.coreos.com.alertmanagerconfig/types/snmp.vue +45 -0
- package/edit/monitoring.coreos.com.alertmanagerconfig/types/work.vue +31 -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/provisioning.cattle.io.cluster/tabs/Basics.vue +1 -1
- 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 +19 -15
- 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/list/management.cattle.io.podsecurityadmissionconfigurationtemplate.vue +8 -6
- package/mixins/create-edit-view/impl.js +10 -0
- package/models/provisioning.cattle.io.cluster.js +19 -18
- package/models/workload.js +2 -2
- package/package.json +1 -1
- package/pages/account/index.vue +93 -58
- package/pages/auth/login.vue +1 -1
- package/pages/auth/setup.vue +36 -17
- package/pages/c/_cluster/explorer/ConfigBadge.vue +1 -1
- package/pages/c/_cluster/explorer/index.vue +2 -1
- package/pages/c/_cluster/explorer/tools/index.vue +6 -6
- package/pages/home.vue +55 -13
- package/plugins/dashboard-store/actions.js +1 -1
- package/rancher-components/Banner/Banner.vue +14 -2
- package/rancher-components/Form/Radio/RadioGroup.vue +9 -1
- package/rancher-components/LabeledTooltip/LabeledTooltip.vue +31 -2
- package/scripts/build-pkg.sh +18 -23
- package/scripts/publish-shell.sh +1 -1
- package/store/i18n.js +1 -0
- package/store/type-map.js +0 -2
- package/utils/error.js +23 -3
- package/utils/errorTranslate.json +377 -8
- package/utils/errorTranslateNew.json +39 -0
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div>
|
|
3
|
+
<div class="mb-20">
|
|
4
|
+
<LabeledInput
|
|
5
|
+
v-model:value="message"
|
|
6
|
+
:placeholder="'请输入手机号'"
|
|
7
|
+
:label="'默认手机人电话'"
|
|
8
|
+
/>
|
|
9
|
+
</div>
|
|
10
|
+
<div class="mb-20">
|
|
11
|
+
<LabeledInput
|
|
12
|
+
v-model:value="id"
|
|
13
|
+
:placeholder="'API密钥ID'"
|
|
14
|
+
:label="'默认API密钥ID'"
|
|
15
|
+
/>
|
|
16
|
+
</div>
|
|
17
|
+
<div class="mb-20">
|
|
18
|
+
<LabeledInput
|
|
19
|
+
v-model:value="scret"
|
|
20
|
+
:placeholder="'API密钥secret'"
|
|
21
|
+
:label="'默认API密钥secret'"
|
|
22
|
+
/>
|
|
23
|
+
</div>
|
|
24
|
+
<div class="mb-20">
|
|
25
|
+
<LabeledInput
|
|
26
|
+
v-model:value="templateId"
|
|
27
|
+
:placeholder="'请输入模板ID'"
|
|
28
|
+
:label="'模板ID'"
|
|
29
|
+
/>
|
|
30
|
+
</div>
|
|
31
|
+
</div>
|
|
32
|
+
</template>
|
|
33
|
+
<script>
|
|
34
|
+
import { LabeledInput } from '@components/Form/LabeledInput';
|
|
35
|
+
// import { ref } from 'vue';
|
|
36
|
+
// const id = ref('');
|
|
37
|
+
// const scret = ref('');
|
|
38
|
+
// const message = ref('');
|
|
39
|
+
// const templateId = ref('');
|
|
40
|
+
|
|
41
|
+
export default {
|
|
42
|
+
components: { LabeledInput },
|
|
43
|
+
data() {
|
|
44
|
+
return {
|
|
45
|
+
message: '',
|
|
46
|
+
id: '',
|
|
47
|
+
scret: '',
|
|
48
|
+
templateId: ''
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
</script>
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div>
|
|
3
|
+
<div class="mb-20">
|
|
4
|
+
<LabeledInput
|
|
5
|
+
v-model:value="message"
|
|
6
|
+
:placeholder="'目标主机'"
|
|
7
|
+
:label="'目标主机'"
|
|
8
|
+
/>
|
|
9
|
+
</div>
|
|
10
|
+
<div class="mb-20">
|
|
11
|
+
<LabeledInput
|
|
12
|
+
v-model:value="id"
|
|
13
|
+
:placeholder="'端口'"
|
|
14
|
+
:label="'端口'"
|
|
15
|
+
/>
|
|
16
|
+
</div>
|
|
17
|
+
<div class="mb-20">
|
|
18
|
+
<LabeledInput
|
|
19
|
+
v-model:value="scret"
|
|
20
|
+
:placeholder="'团体字'"
|
|
21
|
+
:label="'团体字'"
|
|
22
|
+
/>
|
|
23
|
+
</div>
|
|
24
|
+
</div>
|
|
25
|
+
</template>
|
|
26
|
+
<script>
|
|
27
|
+
import { LabeledInput } from '@components/Form/LabeledInput';
|
|
28
|
+
// import { ref } from 'vue';
|
|
29
|
+
// const id = ref('');
|
|
30
|
+
// const scret = ref('');
|
|
31
|
+
// const message = ref('');
|
|
32
|
+
// const templateId = ref('');
|
|
33
|
+
|
|
34
|
+
export default {
|
|
35
|
+
components: { LabeledInput },
|
|
36
|
+
data() {
|
|
37
|
+
return {
|
|
38
|
+
message: '',
|
|
39
|
+
id: '',
|
|
40
|
+
scret: '',
|
|
41
|
+
templateId: ''
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
</script>
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div>
|
|
3
|
+
<div class="mb-20">
|
|
4
|
+
<LabeledInput
|
|
5
|
+
v-model:value="message"
|
|
6
|
+
:placeholder="'webhook地址'"
|
|
7
|
+
:label="'webhook地址'"
|
|
8
|
+
/>
|
|
9
|
+
</div>
|
|
10
|
+
</div>
|
|
11
|
+
</template>
|
|
12
|
+
<script>
|
|
13
|
+
import { LabeledInput } from '@components/Form/LabeledInput';
|
|
14
|
+
// import { ref } from 'vue';
|
|
15
|
+
// const id = ref('');
|
|
16
|
+
// const scret = ref('');
|
|
17
|
+
// const message = ref('');
|
|
18
|
+
// const templateId = ref('');
|
|
19
|
+
|
|
20
|
+
export default {
|
|
21
|
+
components: { LabeledInput },
|
|
22
|
+
data() {
|
|
23
|
+
return {
|
|
24
|
+
message: '',
|
|
25
|
+
id: '',
|
|
26
|
+
scret: '',
|
|
27
|
+
templateId: ''
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
</script>
|
|
@@ -89,10 +89,10 @@ export default {
|
|
|
89
89
|
|
|
90
90
|
<template>
|
|
91
91
|
<div
|
|
92
|
-
class="cert row"
|
|
92
|
+
class="cert row mb-10"
|
|
93
93
|
@update:value="update"
|
|
94
94
|
>
|
|
95
|
-
<div
|
|
95
|
+
<div>
|
|
96
96
|
<LabeledSelect
|
|
97
97
|
v-model:value="secretVal"
|
|
98
98
|
class="secret-name"
|
|
@@ -107,7 +107,9 @@ export default {
|
|
|
107
107
|
@update:value="onSecretInput"
|
|
108
108
|
/>
|
|
109
109
|
</div>
|
|
110
|
-
|
|
110
|
+
</div>
|
|
111
|
+
<div class="row ingressBox">
|
|
112
|
+
<div style="padding-left: 160px;">
|
|
111
113
|
<ArrayList
|
|
112
114
|
:value="hosts"
|
|
113
115
|
:add-label="t('ingress.certificates.addHost')"
|
|
@@ -127,6 +129,13 @@ export default {
|
|
|
127
129
|
position: absolute;
|
|
128
130
|
}
|
|
129
131
|
|
|
132
|
+
.ingressBox
|
|
133
|
+
:deep() .box {
|
|
134
|
+
border: 0px solid var(--tabbed-border);
|
|
135
|
+
>.remove {
|
|
136
|
+
top: 1px;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
130
139
|
.cert {
|
|
131
140
|
position: relative;
|
|
132
141
|
|
|
@@ -135,8 +144,8 @@ export default {
|
|
|
135
144
|
}
|
|
136
145
|
|
|
137
146
|
&:not(:last-of-type) {
|
|
138
|
-
padding-bottom: 10px;
|
|
139
|
-
margin-bottom: 30px;
|
|
147
|
+
// padding-bottom: 10px;
|
|
148
|
+
// margin-bottom: 30px;
|
|
140
149
|
}
|
|
141
150
|
}
|
|
142
151
|
</style>
|
|
@@ -96,7 +96,7 @@ export default {
|
|
|
96
96
|
v-if="serviceName || !isView"
|
|
97
97
|
class="row"
|
|
98
98
|
>
|
|
99
|
-
<div class="col span-
|
|
99
|
+
<div class="col span-6">
|
|
100
100
|
<LabeledSelect
|
|
101
101
|
v-model:value="serviceName"
|
|
102
102
|
:taggable="true"
|
|
@@ -111,7 +111,7 @@ export default {
|
|
|
111
111
|
/>
|
|
112
112
|
</div>
|
|
113
113
|
<div
|
|
114
|
-
class="col span-
|
|
114
|
+
class="col span-6"
|
|
115
115
|
:style="{'margin-right': '0px'}"
|
|
116
116
|
>
|
|
117
117
|
<LabeledInput
|
|
@@ -107,10 +107,10 @@ export default {
|
|
|
107
107
|
|
|
108
108
|
<template>
|
|
109
109
|
<div class="rule">
|
|
110
|
-
<div class="row
|
|
110
|
+
<div class="row">
|
|
111
111
|
<div
|
|
112
112
|
id="host"
|
|
113
|
-
class="col
|
|
113
|
+
class="col"
|
|
114
114
|
>
|
|
115
115
|
<LabeledInput
|
|
116
116
|
ref="host"
|
|
@@ -121,12 +121,8 @@ export default {
|
|
|
121
121
|
@update:value="update"
|
|
122
122
|
/>
|
|
123
123
|
</div>
|
|
124
|
-
<div
|
|
125
|
-
id="spacer"
|
|
126
|
-
class="col span-5"
|
|
127
|
-
/>
|
|
128
124
|
</div>
|
|
129
|
-
<div class="rule-path-headings row">
|
|
125
|
+
<!-- <div class="rule-path-headings row">
|
|
130
126
|
<div
|
|
131
127
|
class="col"
|
|
132
128
|
:class="{'span-6': ingress.showPathType, 'span-4': !ingress.showPathType}"
|
|
@@ -134,20 +130,18 @@ export default {
|
|
|
134
130
|
<label>{{ t("ingress.rules.path.label") }}</label>
|
|
135
131
|
</div>
|
|
136
132
|
<div
|
|
137
|
-
class="col"
|
|
138
133
|
:class="{'span-3': ingress.showPathType, 'span-4': !ingress.showPathType}"
|
|
139
134
|
>
|
|
140
135
|
<label>{{ t("ingress.rules.target.label") }}</label>
|
|
141
136
|
</div>
|
|
142
137
|
<div
|
|
143
|
-
class="col"
|
|
144
138
|
:class="{'span-2': ingress.showPathType, 'span-3': !ingress.showPathType}"
|
|
145
139
|
:style="{ 'margin-right': '0px' }"
|
|
146
140
|
>
|
|
147
141
|
<label>{{ t("ingress.rules.port.label") }}</label>
|
|
148
142
|
</div>
|
|
149
143
|
<div class="col" />
|
|
150
|
-
</div>
|
|
144
|
+
</div> -->
|
|
151
145
|
<template
|
|
152
146
|
v-for="(path, i) in paths"
|
|
153
147
|
:key="path.id"
|
|
@@ -155,7 +149,7 @@ export default {
|
|
|
155
149
|
<RulePath
|
|
156
150
|
ref="paths"
|
|
157
151
|
v-model:value="paths[i]"
|
|
158
|
-
class="row
|
|
152
|
+
class="row"
|
|
159
153
|
:rule-mode="ruleMode"
|
|
160
154
|
:service-targets="serviceTargets"
|
|
161
155
|
:ingress="ingress"
|
|
@@ -107,118 +107,127 @@ export default {
|
|
|
107
107
|
};
|
|
108
108
|
</script>
|
|
109
109
|
<template>
|
|
110
|
-
<div class="rule-path
|
|
111
|
-
<div
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
<InputWithSelect
|
|
116
|
-
ref="first"
|
|
117
|
-
class="path-type"
|
|
118
|
-
:options="pathTypes"
|
|
119
|
-
:placeholder="t('ingress.rules.path.placeholder', undefined, true)"
|
|
120
|
-
:select-value="value.pathType"
|
|
121
|
-
:text-value="value.path"
|
|
122
|
-
:searchable="false"
|
|
123
|
-
:text-rules="rules.path"
|
|
124
|
-
@update:value="queueUpdatePathTypeAndPath"
|
|
125
|
-
/>
|
|
126
|
-
</div>
|
|
127
|
-
<div
|
|
128
|
-
v-else
|
|
129
|
-
class="col span-4"
|
|
130
|
-
>
|
|
131
|
-
<input
|
|
132
|
-
ref="first"
|
|
133
|
-
v-model="path"
|
|
134
|
-
:placeholder="t('ingress.rules.path.placeholder', undefined, true)"
|
|
135
|
-
@input="queueUpdate"
|
|
110
|
+
<div class="rule-path" style="display: block;">
|
|
111
|
+
<div class="row">
|
|
112
|
+
<button
|
|
113
|
+
class="btn btn-sm role-link remove"
|
|
114
|
+
@click="remove"
|
|
136
115
|
>
|
|
116
|
+
{{ t('ingress.rules.removePath') }}
|
|
117
|
+
</button>
|
|
118
|
+
</div>
|
|
119
|
+
<div class="flex col">
|
|
120
|
+
<div class="label">{{ t("ingress.rules.target.label") }}</div>
|
|
121
|
+
<div class="service" style="width: 400px;">
|
|
122
|
+
<Select
|
|
123
|
+
v-model:value="serviceName"
|
|
124
|
+
:options="serviceTargets"
|
|
125
|
+
:status="serviceTargetStatus"
|
|
126
|
+
:taggable="true"
|
|
127
|
+
:searchable="true"
|
|
128
|
+
:tooltip="serviceTargetTooltip"
|
|
129
|
+
:hover-tooltip="true"
|
|
130
|
+
@update:value="servicePort = ''; queueUpdate();"
|
|
131
|
+
/>
|
|
132
|
+
</div>
|
|
137
133
|
</div>
|
|
138
|
-
<div
|
|
139
|
-
class="
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
134
|
+
<div class="flex col">
|
|
135
|
+
<div class="label">{{ t("ingress.rules.port.label") }}</div>
|
|
136
|
+
<div>
|
|
137
|
+
<LabeledInput
|
|
138
|
+
v-if="portOptions.length === 0"
|
|
139
|
+
v-model:value="servicePort"
|
|
140
|
+
class="fullHeightInput"
|
|
141
|
+
:placeholder="t('ingress.rules.port.placeholder')"
|
|
142
|
+
:rules="rules.port"
|
|
143
|
+
@update:value="queueUpdate"
|
|
144
|
+
/>
|
|
145
|
+
<Select
|
|
146
|
+
v-else
|
|
147
|
+
v-model:value="servicePort"
|
|
148
|
+
:options="portOptions"
|
|
149
|
+
:placeholder="t('ingress.rules.port.placeholder')"
|
|
150
|
+
:rules="rules.port"
|
|
151
|
+
@update:value="queueUpdate"
|
|
152
|
+
/>
|
|
153
|
+
</div>
|
|
152
154
|
</div>
|
|
153
|
-
<div
|
|
154
|
-
class="
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
155
|
+
<div class="flex" :style="{marginBottom: !ingress.showPathType ? '24px': '' }">
|
|
156
|
+
<div class="label">
|
|
157
|
+
<div style="padding-bottom: 43px;" v-if="ingress.showPathType">
|
|
158
|
+
匹配模式
|
|
159
|
+
</div>
|
|
160
|
+
<div :style="{paddingBottom: ingress.showPathType ? '15px' : ''}">
|
|
161
|
+
{{ t("ingress.rules.path.label") }}
|
|
162
|
+
</div>
|
|
163
|
+
</div>
|
|
164
|
+
<div
|
|
165
|
+
v-if="ingress.showPathType"
|
|
166
|
+
class="path_row"
|
|
167
|
+
>
|
|
168
|
+
<InputWithSelect
|
|
169
|
+
ref="first"
|
|
170
|
+
class="path-type"
|
|
171
|
+
:options="pathTypes"
|
|
172
|
+
:placeholder="t('ingress.rules.path.placeholder', undefined, true)"
|
|
173
|
+
:select-value="value.pathType"
|
|
174
|
+
:text-value="value.path"
|
|
175
|
+
:searchable="false"
|
|
176
|
+
:text-rules="rules.path"
|
|
177
|
+
@update:value="queueUpdatePathTypeAndPath"
|
|
178
|
+
/>
|
|
179
|
+
</div>
|
|
180
|
+
<div v-else class="path_row2">
|
|
181
|
+
<input
|
|
182
|
+
ref="first"
|
|
183
|
+
v-model="path"
|
|
184
|
+
:placeholder="t('ingress.rules.path.placeholder', undefined, true)"
|
|
185
|
+
@input="queueUpdate"
|
|
186
|
+
>
|
|
187
|
+
</div>
|
|
174
188
|
</div>
|
|
175
|
-
<button
|
|
176
|
-
class="btn btn-sm role-link col"
|
|
177
|
-
@click="remove"
|
|
178
|
-
>
|
|
179
|
-
{{ t('ingress.rules.removePath') }}
|
|
180
|
-
</button>
|
|
181
189
|
</div>
|
|
182
190
|
</template>
|
|
183
191
|
<style lang="scss" scoped>
|
|
184
192
|
// TODO #11952: Correct deep statement
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
height: 100%;
|
|
190
|
-
|
|
191
|
-
input.no-label {
|
|
192
|
-
height: calc($row-height - 2px);
|
|
193
|
-
padding: 10px;
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
:deep(.col), INPUT {
|
|
198
|
-
height: $row-height;
|
|
193
|
+
::v-deep .input-container{
|
|
194
|
+
display: flex !important;
|
|
195
|
+
.unlabeled-select{
|
|
196
|
+
height: 34px !important;
|
|
199
197
|
}
|
|
200
|
-
|
|
201
|
-
|
|
198
|
+
.in-input.unlabeled-select{
|
|
199
|
+
margin-right: -1px;
|
|
200
|
+
margin-bottom: 24px;
|
|
201
|
+
width: 400px;
|
|
202
202
|
}
|
|
203
|
+
}
|
|
203
204
|
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
205
|
+
.flex{
|
|
206
|
+
display: flex;
|
|
207
|
+
align-items: center;
|
|
207
208
|
|
|
208
|
-
|
|
209
|
-
|
|
209
|
+
.label{
|
|
210
|
+
min-width: 160px;
|
|
210
211
|
}
|
|
212
|
+
}
|
|
211
213
|
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
padding-top: 6px;
|
|
214
|
+
::v-deep .path_row{
|
|
215
|
+
width: 800px;
|
|
216
|
+
.input-container{
|
|
217
|
+
flex-direction: column;
|
|
217
218
|
}
|
|
218
219
|
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
min-width: 200px;
|
|
220
|
+
.labeled-container{
|
|
221
|
+
width: 0px !important;
|
|
222
222
|
}
|
|
223
223
|
}
|
|
224
|
+
|
|
225
|
+
.path_row2{
|
|
226
|
+
width: 400px;
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
.remove{
|
|
230
|
+
padding: 0px;
|
|
231
|
+
min-width: auto;
|
|
232
|
+
}
|
|
224
233
|
</style>
|
|
@@ -40,8 +40,8 @@ export default {
|
|
|
40
40
|
|
|
41
41
|
<template>
|
|
42
42
|
<div class="rule">
|
|
43
|
-
<div class="row
|
|
44
|
-
<div class="
|
|
43
|
+
<div class="row">
|
|
44
|
+
<div class="span-12">
|
|
45
45
|
<h2>
|
|
46
46
|
{{ t(`networkpolicy.${type}.ruleLabel`) }}
|
|
47
47
|
<i
|
|
@@ -68,7 +68,7 @@ export default {
|
|
|
68
68
|
</ArrayListGrouped>
|
|
69
69
|
</div>
|
|
70
70
|
</div>
|
|
71
|
-
<div class="row
|
|
71
|
+
<div class="row">
|
|
72
72
|
<div class="col span-12">
|
|
73
73
|
<h2>
|
|
74
74
|
{{ t('networkpolicy.rules.ports.label') }}
|
|
@@ -26,7 +26,7 @@ export default {
|
|
|
26
26
|
|
|
27
27
|
<template>
|
|
28
28
|
<div class="row">
|
|
29
|
-
<div class="col
|
|
29
|
+
<div class="col">
|
|
30
30
|
<LabeledInput
|
|
31
31
|
v-model:value.number="value.port"
|
|
32
32
|
:mode="mode"
|
|
@@ -37,7 +37,9 @@ export default {
|
|
|
37
37
|
:label="t('networkpolicy.rules.ports.port.label')"
|
|
38
38
|
/>
|
|
39
39
|
</div>
|
|
40
|
-
|
|
40
|
+
</div>
|
|
41
|
+
<div class="row">
|
|
42
|
+
<div class="col">
|
|
41
43
|
<LabeledSelect
|
|
42
44
|
v-model:value="value.protocol"
|
|
43
45
|
:mode="mode"
|
|
@@ -221,8 +221,8 @@ export default {
|
|
|
221
221
|
|
|
222
222
|
<template>
|
|
223
223
|
<div class="rule">
|
|
224
|
-
<div class="row
|
|
225
|
-
<div class="col
|
|
224
|
+
<div class="row">
|
|
225
|
+
<div class="col">
|
|
226
226
|
<LabeledSelect
|
|
227
227
|
v-model:value="targetType"
|
|
228
228
|
data-testid="policy-rule-target-type-labeled-select"
|
|
@@ -236,7 +236,7 @@ export default {
|
|
|
236
236
|
</div>
|
|
237
237
|
<div v-if="targetType === TARGET_OPTIONS.IP_BLOCK">
|
|
238
238
|
<div class="row">
|
|
239
|
-
<div class="col
|
|
239
|
+
<div class="col">
|
|
240
240
|
<LabeledInput
|
|
241
241
|
v-model:value="value[TARGET_OPTIONS.IP_BLOCK].cidr"
|
|
242
242
|
data-testid="labeled-input-ip-block-selector"
|
|
@@ -250,14 +250,15 @@ export default {
|
|
|
250
250
|
v-if="invalidCidr"
|
|
251
251
|
class="row"
|
|
252
252
|
>
|
|
253
|
-
<div class="col
|
|
253
|
+
<div class="col">
|
|
254
254
|
<Banner color="error">
|
|
255
255
|
<t k="networkpolicy.rules.ipBlock.invalidCidr" />
|
|
256
256
|
</Banner>
|
|
257
257
|
</div>
|
|
258
258
|
</div>
|
|
259
|
-
<div class="row
|
|
260
|
-
<div class="col
|
|
259
|
+
<div class="row">
|
|
260
|
+
<div class="col" style="display: flex;">
|
|
261
|
+
<div style="min-width: 160px;"></div>
|
|
261
262
|
<ArrayList
|
|
262
263
|
v-model:value="value[TARGET_OPTIONS.IP_BLOCK].except"
|
|
263
264
|
:add-label="t('networkpolicy.rules.ipBlock.addExcept')"
|
|
@@ -281,7 +282,7 @@ export default {
|
|
|
281
282
|
</div>
|
|
282
283
|
<div v-if="targetType === TARGET_OPTIONS.POD_SELECTOR">
|
|
283
284
|
<div class="row">
|
|
284
|
-
<div class="
|
|
285
|
+
<div class="span-12">
|
|
285
286
|
<Banner color="success">
|
|
286
287
|
<span v-clean-html="t('networkpolicy.selectors.matchingPods.matchesSome', matchingPods)" />
|
|
287
288
|
</Banner>
|
|
@@ -302,7 +303,7 @@ export default {
|
|
|
302
303
|
</div>
|
|
303
304
|
<div v-if="targetType === TARGET_OPTIONS.NAMESPACE_SELECTOR">
|
|
304
305
|
<div class="row">
|
|
305
|
-
<div class="
|
|
306
|
+
<div class="span-12">
|
|
306
307
|
<Banner color="success">
|
|
307
308
|
<span
|
|
308
309
|
v-clean-html="t('networkpolicy.selectors.matchingNamespaces.matchesSome', matchingNamespaces)"
|
|
@@ -326,7 +327,7 @@ export default {
|
|
|
326
327
|
</div>
|
|
327
328
|
<div v-if="targetType === TARGET_OPTIONS.NAMESPACE_AND_POD_SELECTOR">
|
|
328
329
|
<div class="row">
|
|
329
|
-
<div class="
|
|
330
|
+
<div class="span-12">
|
|
330
331
|
<Banner color="success">
|
|
331
332
|
<span
|
|
332
333
|
v-if="!namespaceSelectorExpressions.length"
|
|
@@ -345,7 +346,7 @@ export default {
|
|
|
345
346
|
{{ t('networkpolicy.rules.namespace') }}
|
|
346
347
|
</span>
|
|
347
348
|
</div>
|
|
348
|
-
<div class="col
|
|
349
|
+
<div class="col">
|
|
349
350
|
<MatchExpressions
|
|
350
351
|
v-model:value="namespaceSelectorExpressions"
|
|
351
352
|
data-testid="match-expression-namespace-and-pod-selector-ns-rule"
|
|
@@ -364,7 +365,7 @@ export default {
|
|
|
364
365
|
{{ t('networkpolicy.rules.pod') }}
|
|
365
366
|
</span>
|
|
366
367
|
</div>
|
|
367
|
-
<div class="col
|
|
368
|
+
<div class="col">
|
|
368
369
|
<MatchExpressions
|
|
369
370
|
v-model:value="podSelectorExpressions"
|
|
370
371
|
data-testid="match-expression-namespace-and-pod-selector-pod-rule"
|
|
@@ -252,7 +252,7 @@ export default {
|
|
|
252
252
|
</div>
|
|
253
253
|
</div>
|
|
254
254
|
<div class="row">
|
|
255
|
-
<div class="
|
|
255
|
+
<div class="span-12">
|
|
256
256
|
<Banner color="success">
|
|
257
257
|
<span v-clean-html="t('networkpolicy.selectors.matchingPods.matchesSome', matchingPods)" />
|
|
258
258
|
</Banner>
|
|
@@ -298,7 +298,7 @@ export default {
|
|
|
298
298
|
:label="t('persistentVolume.customize.label')"
|
|
299
299
|
:weight="0"
|
|
300
300
|
>
|
|
301
|
-
<div class="row
|
|
301
|
+
<div class="row">
|
|
302
302
|
<div class="col span-6">
|
|
303
303
|
<h3>{{ t('persistentVolume.customize.accessModes.label') }}</h3>
|
|
304
304
|
<div>
|
|
@@ -323,6 +323,8 @@ export default {
|
|
|
323
323
|
/>
|
|
324
324
|
</div>
|
|
325
325
|
</div>
|
|
326
|
+
</div>
|
|
327
|
+
<div class="row">
|
|
326
328
|
<div class="col span-6">
|
|
327
329
|
<ArrayList
|
|
328
330
|
v-model:value="value.spec.mountOptions"
|
package/edit/secret/index.vue
CHANGED
|
@@ -444,7 +444,7 @@ export default {
|
|
|
444
444
|
v-if="isCustomSecretCreate"
|
|
445
445
|
class="row"
|
|
446
446
|
>
|
|
447
|
-
<div class="col span-
|
|
447
|
+
<div class="col span-6">
|
|
448
448
|
<LabeledSelect
|
|
449
449
|
v-model:value="secretType"
|
|
450
450
|
:options="secretTypes"
|
|
@@ -458,7 +458,7 @@ export default {
|
|
|
458
458
|
/>
|
|
459
459
|
</div>
|
|
460
460
|
|
|
461
|
-
<div class="col span-
|
|
461
|
+
<div class="col span-6">
|
|
462
462
|
<LabeledInput
|
|
463
463
|
v-if="showCustomSecretType"
|
|
464
464
|
ref="customType"
|