@rancher/shell 0.3.0 → 0.3.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/styles/global/_button.scss +5 -1
- package/assets/styles/global/_columns.scss +4 -0
- package/assets/styles/global/_gauges.scss +1 -1
- package/assets/styles/global/_layout.scss +5 -2
- package/assets/styles/global/_select.scss +1 -4
- package/assets/styles/themes/_dark.scss +5 -4
- package/assets/styles/themes/_light.scss +4 -3
- package/assets/styles/themes/_suse.scss +1 -1
- package/assets/styles/vendor/vue-select.scss +4 -3
- package/assets/translations/en-us.yaml +673 -73
- package/assets/translations/zh-hans.yaml +720 -207
- package/chart/monitoring/steps/uninstall-v1.vue +2 -2
- package/cloud-credential/azure.vue +23 -0
- package/cloud-credential/harvester.vue +25 -62
- package/cloud-credential/pnap.vue +80 -0
- package/components/.DS_Store +0 -0
- package/components/ActionMenu.vue +28 -7
- package/components/AdvancedSection.vue +9 -2
- package/components/Alert.vue +2 -2
- package/components/ButtonDropdown.vue +0 -2
- package/components/ButtonGroup.vue +1 -0
- package/components/CollapsibleCard.vue +0 -1
- package/components/CruResource.vue +41 -4
- package/components/DetailTop.vue +72 -4
- package/components/DisableAuthProviderModal.vue +106 -0
- package/{rancher-components/components/Utils/DraggableZone → components}/DraggableZone.vue +0 -0
- package/components/ExplorerMembers.vue +253 -30
- package/components/ExplorerProjectsNamespaces.vue +77 -33
- package/components/ExtensionPanel.vue +42 -0
- package/components/GrowlManager.vue +3 -3
- package/components/IconOrSvg.vue +178 -0
- package/components/LogItem.vue +69 -0
- package/components/PodSecurityAdmission.vue +302 -0
- package/components/PromptModal.vue +1 -0
- package/components/ResourceDetail/Masthead.vue +69 -4
- package/components/ResourceDetail/index.vue +12 -5
- package/components/ResourceList/Masthead.vue +11 -1
- package/components/ResourceList/ResourceLoadingIndicator.vue +12 -2
- package/components/ResourceList/index.vue +66 -12
- package/components/ResourceList/resource-list.config.js +7 -0
- package/components/ResourceTable.vue +33 -6
- package/components/SimpleBox.vue +1 -1
- package/components/SortableTable/THead.vue +21 -14
- package/components/SortableTable/filtering.js +1 -1
- package/components/SortableTable/index.vue +21 -10
- package/components/SortableTable/selection.js +15 -3
- package/components/Tabbed/Tab.vue +1 -1
- package/components/Tabbed/index.vue +20 -15
- package/components/__tests__/.DS_Store +0 -0
- package/components/__tests__/AsyncButton.test.ts +140 -0
- package/components/__tests__/BackLink.test.ts +33 -0
- package/components/__tests__/ButtonGroup.test.ts +124 -0
- package/components/__tests__/ClusterBadge.test.ts +32 -0
- package/components/__tests__/CollapsibleCard.test.ts +64 -0
- package/components/__tests__/ConsumptionGauge.test.ts +88 -0
- package/components/__tests__/CruResource.test.ts +3 -2
- package/components/__tests__/FixedBanner.test.ts +129 -0
- package/components/__tests__/GrowlManager.test.ts +147 -0
- package/components/__tests__/NamespaceFilter.test.ts +33 -25
- package/components/__tests__/PercentageBar.test.ts +32 -0
- package/components/__tests__/PodSecurityAdmission.test.ts +398 -0
- package/components/auth/AuthBanner.vue +20 -10
- package/components/auth/RoleDetailEdit.vue +26 -17
- package/components/auth/SelectPrincipal.vue +36 -5
- package/components/form/ArrayList.vue +3 -35
- package/components/form/ArrayListGrouped.vue +13 -4
- package/components/form/ArrayListSelect.vue +5 -5
- package/components/form/Error.vue +8 -0
- package/components/form/KeyValue.vue +39 -7
- package/components/form/LabeledSelect.vue +5 -2
- package/components/form/Labels.vue +46 -16
- package/components/form/Members/ClusterPermissionsEditor.vue +17 -17
- package/components/form/Members/MembershipEditor.vue +12 -12
- package/components/form/NameNsDescription.vue +1 -1
- package/components/form/NodeScheduling.vue +1 -1
- package/components/form/Probe.vue +3 -3
- package/components/form/ResourceQuota/Project.vue +6 -6
- package/components/form/ResourceTabs/index.vue +24 -6
- package/components/form/Security.vue +7 -6
- package/components/form/Select.vue +3 -2
- package/components/form/SelectOrCreateAuthSecret.vue +22 -29
- package/components/form/ServicePorts.vue +8 -0
- package/components/form/WorkloadPorts.vue +7 -1
- package/components/form/__tests__/ArrayList.test.ts +74 -0
- package/components/form/__tests__/ArrayListGrouped.test.ts +6 -4
- package/components/formatter/Checked.vue +1 -1
- package/components/formatter/ClusterLink.vue +5 -0
- package/components/formatter/IconIsDefault.vue +2 -2
- package/components/formatter/InternalExternalIP.vue +11 -8
- package/components/formatter/LiveDuration.vue +78 -0
- package/components/formatter/WorkloadHealthScale.vue +5 -3
- package/components/nav/Header.vue +74 -7
- package/components/nav/NamespaceFilter.vue +146 -63
- package/components/nav/TopLevelMenu.vue +22 -19
- package/components/nav/WindowManager/ContainerLogs.vue +83 -126
- package/components/nav/WindowManager/ContainerShell.vue +9 -7
- package/components/nav/WindowManager/Window.vue +2 -0
- package/components/nav/WindowManager/index.vue +10 -0
- package/config/elemental-types.js +9 -0
- package/config/features.js +2 -0
- package/config/home-links.js +4 -1
- package/config/pod-security-admission.ts +82 -0
- package/config/product/apps.js +1 -1
- package/config/product/auth.js +6 -5
- package/config/product/backup.js +1 -1
- package/config/product/explorer.js +6 -6
- package/config/product/fleet.js +1 -1
- package/config/product/manager.js +6 -2
- package/config/query-params.js +1 -0
- package/config/secret.js +0 -1
- package/config/settings.ts +26 -9
- package/config/table-headers.js +22 -11
- package/config/types.js +4 -1
- package/config/uiplugins.js +3 -3
- package/content/docs/zh-hans/getting-started.md +113 -137
- package/content/docs/zh-hans/whats-new.md +8 -46
- package/core/plugin-helpers.js +171 -0
- package/core/plugin.ts +61 -1
- package/core/plugins.js +33 -0
- package/core/types.ts +128 -2
- package/creators/pkg/package-lock.json +37 -0
- package/creators/pkg/package.json +1 -1
- package/detail/catalog.cattle.io.app.vue +1 -1
- package/detail/pod.vue +1 -1
- package/detail/provisioning.cattle.io.cluster.vue +35 -9
- package/detail/service.vue +2 -9
- package/detail/workload/index.vue +0 -1
- package/dialog/AddClusterMemberDialog.vue +22 -28
- package/dialog/AddProjectMemberDialog.vue +53 -9
- package/dialog/DiagnosticTimingsDialog.vue +8 -7
- package/dialog/DrainNode.vue +44 -48
- package/dialog/ForceMachineRemoveDialog.vue +5 -7
- package/dialog/GenericPrompt.vue +15 -20
- package/dialog/RollbackWorkloadDialog.vue +15 -46
- package/dialog/RotateCertificatesDialog.vue +5 -7
- package/dialog/RotateEncryptionKeyDialog.vue +5 -9
- package/dialog/SaveAsRKETemplateDialog.vue +5 -13
- package/dialog/ScaleMachineDownDialog.vue +1 -1
- package/dialog/ScalePoolDownDialog.vue +121 -0
- package/edit/__tests__/management.cattle.io.setting.test.ts +3 -3
- package/edit/auth/azuread.vue +16 -16
- package/edit/auth/github.vue +8 -0
- package/edit/auth/googleoauth.vue +10 -1
- package/edit/auth/ldap/index.vue +10 -0
- package/edit/auth/oidc.vue +10 -0
- package/edit/auth/saml.vue +10 -0
- package/edit/autoscaling.horizontalpodautoscaler/index.vue +1 -1
- package/edit/catalog.cattle.io.clusterrepo.vue +3 -0
- package/edit/cloudcredential.vue +3 -7
- package/edit/logging-flow/Match.vue +39 -8
- package/edit/logging-flow/index.vue +27 -4
- package/edit/management.cattle.io.podsecurityadmissionconfigurationtemplate.vue +107 -0
- package/edit/management.cattle.io.project.vue +8 -1
- package/edit/management.cattle.io.setting.vue +5 -2
- package/edit/management.cattle.io.user.vue +7 -1
- package/edit/monitoring.coreos.com.alertmanagerconfig/receiverConfig.vue +36 -8
- package/edit/monitoring.coreos.com.alertmanagerconfig/types/email.vue +2 -2
- package/edit/monitoring.coreos.com.prometheusrule/GroupRules.vue +14 -6
- package/edit/namespace.vue +18 -4
- package/edit/networking.k8s.io.ingress/Certificate.vue +1 -0
- package/edit/networking.k8s.io.ingress/IngressClass.vue +8 -6
- package/edit/networking.k8s.io.ingress/RulePath.vue +12 -6
- package/edit/networking.k8s.io.ingress/index.vue +8 -6
- package/edit/persistentvolume/index.vue +30 -27
- package/edit/persistentvolume/plugins/cephfs.vue +29 -29
- package/edit/persistentvolume/plugins/csi.vue +102 -62
- package/edit/persistentvolume/plugins/fc.vue +19 -19
- package/edit/persistentvolume/plugins/iscsi.vue +45 -45
- package/edit/persistentvolume/plugins/rbd.vue +39 -39
- package/edit/persistentvolumeclaim.vue +78 -75
- package/edit/provisioning.cattle.io.cluster/MachinePool.vue +11 -7
- package/edit/provisioning.cattle.io.cluster/RegistryConfigs.vue +10 -1
- package/edit/provisioning.cattle.io.cluster/RegistryMirrors.vue +87 -27
- package/edit/provisioning.cattle.io.cluster/SelectCredential.vue +3 -6
- package/edit/provisioning.cattle.io.cluster/__tests__/rke2.test.ts +96 -0
- package/edit/provisioning.cattle.io.cluster/import.vue +1 -1
- package/edit/provisioning.cattle.io.cluster/index.vue +29 -6
- package/edit/provisioning.cattle.io.cluster/rke2.vue +445 -154
- package/edit/secret/index.vue +3 -7
- package/edit/service.vue +3 -1
- package/edit/storage.k8s.io.storageclass/index.vue +100 -16
- package/edit/storage.k8s.io.storageclass/provisioners/driver.harvesterhci.io.vue +114 -0
- package/edit/workload/__tests__/index.test.ts +98 -0
- package/edit/workload/index.vue +58 -8
- package/edit/workload/mixins/workload.js +107 -70
- package/edit/workload/storage/ContainerMountPaths.vue +0 -10
- package/edit/workload/storage/emptyDir.vue +88 -0
- package/edit/workload/storage/ephemeralVolume/index.vue +1 -1
- package/edit/workload/storage/index.vue +8 -0
- package/edit/workload/storage/persistentVolumeClaim/index.vue +1 -1
- package/layouts/default.vue +57 -44
- package/list/__tests__/workload.test.ts +5 -2
- package/list/catalog.cattle.io.app.vue +1 -0
- package/list/cis.cattle.io.clusterscan.vue +1 -0
- package/list/fleet.cattle.io.bundle.vue +5 -6
- package/list/fleet.cattle.io.cluster.vue +6 -3
- package/list/fleet.cattle.io.clusterregistrationtoken.vue +5 -6
- package/list/fleet.cattle.io.gitrepo.vue +4 -9
- package/list/helm.cattle.io.projecthelmchart.vue +1 -5
- package/list/logging.banzaicloud.io.clusterflow.vue +4 -1
- package/list/logging.banzaicloud.io.flow.vue +6 -5
- package/list/management.cattle.io.cluster.vue +1 -0
- package/list/management.cattle.io.feature.vue +3 -4
- package/list/management.cattle.io.podsecurityadmissionconfigurationtemplate.vue +47 -0
- package/list/management.cattle.io.setting.vue +2 -2
- package/list/management.cattle.io.user.vue +4 -10
- package/list/monitoring.coreos.com.alertmanagerconfig.vue +2 -7
- package/list/node.vue +8 -5
- package/list/persistentvolume.vue +3 -3
- package/list/persistentvolumeclaim.vue +3 -4
- package/list/provisioning.cattle.io.cluster.vue +18 -19
- package/list/service.vue +6 -14
- package/list/workload.vue +43 -38
- package/machine-config/azure.vue +429 -60
- package/machine-config/pnap.vue +288 -0
- package/mixins/auth-config.js +1 -3
- package/mixins/browser-tab-visibility.js +8 -14
- package/mixins/chart.js +1 -1
- package/mixins/create-edit-view/impl.js +4 -0
- package/mixins/create-edit-view/index.js +4 -2
- package/mixins/resource-fetch-namespaced.js +98 -0
- package/mixins/resource-fetch.js +79 -45
- package/mixins/resource-manager.js +1 -23
- package/models/apps.controllerrevision.js +7 -0
- package/models/apps.daemonset.js +18 -0
- package/models/apps.deployment.js +44 -0
- package/models/apps.replicaset.js +7 -0
- package/models/apps.statefulset.js +18 -0
- package/models/batch.job.js +7 -14
- package/models/cluster/node.js +10 -2
- package/models/cluster.x-k8s.io.machine.js +26 -4
- package/models/cluster.x-k8s.io.machinedeployment.js +12 -2
- package/models/event.js +7 -0
- package/models/logging.banzaicloud.io.flow.js +4 -0
- package/models/management.cattle.io.cluster.js +1 -1
- package/models/management.cattle.io.clusterroletemplatebinding.js +1 -1
- package/models/management.cattle.io.globalrole.js +2 -2
- package/models/management.cattle.io.node.js +37 -2
- package/models/management.cattle.io.podsecurityadmissionconfigurationtemplate.ts +4 -0
- package/models/management.cattle.io.project.js +30 -11
- package/models/management.cattle.io.setting.js +1 -1
- package/models/management.cattle.io.user.js +37 -1
- package/models/namespace.js +42 -5
- package/models/persistentvolume.js +14 -2
- package/models/pod.js +15 -0
- package/models/projectroletemplatebinding.js +7 -0
- package/models/provisioning.cattle.io.cluster.js +61 -10
- package/models/rke-machine.cattle.io.pnapmachinetemplate.js +15 -0
- package/models/service.js +14 -13
- package/models/storage.k8s.io.storageclass.js +33 -18
- package/models/workload.js +38 -7
- package/nuxt.config.js +27 -17
- package/package.json +7 -7
- package/pages/about.vue +14 -2
- package/pages/c/_cluster/apps/charts/index.vue +21 -3
- package/pages/c/_cluster/apps/charts/install.vue +59 -22
- package/pages/c/_cluster/auth/config/_id.vue +6 -0
- package/pages/c/_cluster/auth/config/index.vue +8 -6
- package/pages/c/_cluster/auth/group.principal/assign-edit.vue +1 -1
- package/pages/c/_cluster/auth/roles/index.vue +1 -1
- package/pages/c/_cluster/explorer/index.vue +51 -6
- package/pages/c/_cluster/longhorn/index.vue +1 -1
- package/pages/c/_cluster/monitoring/alertmanagerconfig/_alertmanagerconfigid/receiver.vue +15 -4
- package/pages/c/_cluster/monitoring/index.vue +1 -1
- package/pages/c/_cluster/neuvector/index.vue +1 -1
- package/pages/c/_cluster/settings/performance.vue +48 -2
- package/pages/c/_cluster/uiplugins/DeveloperInstallDialog.vue +2 -0
- package/pages/c/_cluster/uiplugins/InstallDialog.vue +3 -0
- package/pages/c/_cluster/uiplugins/PluginInfoPanel.vue +42 -2
- package/pages/c/_cluster/uiplugins/RemoveUIPlugins.vue +2 -0
- package/pages/c/_cluster/uiplugins/SetupUIPlugins.vue +1 -0
- package/pages/c/_cluster/uiplugins/UninstallDialog.vue +2 -0
- package/pages/c/_cluster/uiplugins/index.vue +42 -3
- package/pages/diagnostic.vue +5 -4
- package/pages/home.vue +105 -30
- package/pages/prefs.vue +23 -12
- package/pages/rio/mesh.vue +1 -1
- package/pkg/dynamic-importer.lib.js +8 -0
- package/pkg/vue.config.js +4 -0
- package/plugins/dashboard-store/__tests__/mutations.spec.js +406 -0
- package/plugins/dashboard-store/actions.js +32 -25
- package/plugins/dashboard-store/getters.js +50 -33
- package/plugins/dashboard-store/mutations.js +134 -28
- package/plugins/dashboard-store/resource-class.js +37 -42
- package/plugins/steve/actions.js +30 -0
- package/plugins/steve/caches/resourceCache.js +60 -0
- package/plugins/steve/getters.js +44 -1
- package/plugins/steve/mutations.js +97 -36
- package/plugins/steve/resourceWatcher.js +277 -0
- package/plugins/steve/schema.utils.js +25 -0
- package/plugins/steve/subscribe.js +288 -115
- package/plugins/steve/worker/index.js +17 -0
- package/plugins/steve/worker/web-worker.advanced.js +302 -0
- package/plugins/steve/{web-worker.steve-sub-worker.js → worker/web-worker.basic.js} +3 -44
- package/rancher-components/Card/Card.vue +3 -3
- package/rancher-components/Form/TextArea/TextAreaAutoGrow.vue +1 -0
- package/rancher-components/StringList/StringList.test.ts +45 -420
- package/rancher-components/StringList/StringList.vue +1 -10
- package/rancher-components/components/Banner/Banner.test.ts +44 -0
- package/rancher-components/components/Banner/Banner.vue +130 -61
- package/rancher-components/components/Form/Checkbox/Checkbox.test.ts +13 -22
- package/rancher-components/components/Form/Checkbox/Checkbox.vue +8 -6
- package/rancher-components/components/Form/ToggleSwitch/ToggleSwitch.test.ts +9 -9
- package/rancher-components/components/LabeledTooltip/LabeledTooltip.vue +0 -1
- package/rancher-components/components/StringList/StringList.test.ts +7 -7
- package/rancher-components/components/StringList/StringList.vue +21 -15
- package/scripts/test-plugins-build.sh +8 -0
- package/static/loading-indicator.html +1 -1
- package/store/action-menu.js +4 -3
- package/store/index.js +54 -3
- package/store/plugins.js +0 -17
- package/store/pnap.js +128 -0
- package/store/prefs.js +4 -2
- package/store/type-map.js +81 -13
- package/types/pod-security-admission.ts +36 -0
- package/types/shell/index.d.ts +497 -396
- package/utils/__tests__/object.test.ts +17 -1
- package/utils/__tests__/pod-security-admission.test.ts +61 -0
- package/utils/async.ts +36 -0
- package/utils/color.js +45 -0
- package/utils/crypto/browserHashUtils.js +18 -0
- package/utils/dynamic-importer.js +8 -0
- package/utils/install-redirect.js +1 -1
- package/utils/object.js +24 -0
- package/utils/pod-security-admission.ts +39 -0
- package/utils/socket.js +61 -24
- package/utils/string.js +2 -0
- package/utils/svg-filter.js +301 -0
- package/utils/time.js +49 -0
- package/utils/validators/cidr.js +4 -0
- package/utils/validators/formRules/__tests__/index.test.ts +23 -3
- package/utils/validators/formRules/index.ts +14 -0
- package/config/product/harvester-manager.js +0 -162
- package/edit/harvesterhci.io.management.cluster.vue +0 -153
- package/list/harvesterhci.io.management.cluster.vue +0 -241
- package/machine-config/harvester.vue +0 -693
- package/models/harvesterhci.io.management.cluster.js +0 -228
- package/pages/c/_cluster/harvesterManager/index.vue +0 -24
- package/rancher-components/Card/Card.test.ts +0 -39
- package/rancher-components/Utils/DraggableZone/DraggableZone.vue +0 -181
- package/rancher-components/Utils/DraggableZone/index.ts +0 -1
- package/rancher-components/components/Utils/DraggableZone/index.ts +0 -1
|
@@ -5,13 +5,11 @@ import { removeAt } from '@shell/utils/array';
|
|
|
5
5
|
import { TextAreaAutoGrow } from '@components/Form/TextArea';
|
|
6
6
|
import { clone } from '@shell/utils/object';
|
|
7
7
|
import { LabeledInput } from '@components/Form/LabeledInput';
|
|
8
|
-
|
|
9
8
|
const DEFAULT_PROTIP = 'Tip: Paste lines into any list field for easy bulk entry';
|
|
10
9
|
|
|
11
10
|
export default {
|
|
12
11
|
components: { TextAreaAutoGrow, LabeledInput },
|
|
13
|
-
|
|
14
|
-
props: {
|
|
12
|
+
props: {
|
|
15
13
|
value: {
|
|
16
14
|
type: Array,
|
|
17
15
|
default: null,
|
|
@@ -24,7 +22,6 @@ export default {
|
|
|
24
22
|
type: Boolean,
|
|
25
23
|
default: false,
|
|
26
24
|
},
|
|
27
|
-
|
|
28
25
|
title: {
|
|
29
26
|
type: String,
|
|
30
27
|
default: ''
|
|
@@ -37,7 +34,6 @@ export default {
|
|
|
37
34
|
type: Boolean,
|
|
38
35
|
default: false,
|
|
39
36
|
},
|
|
40
|
-
|
|
41
37
|
valueLabel: {
|
|
42
38
|
type: String,
|
|
43
39
|
default: 'Value',
|
|
@@ -50,7 +46,6 @@ export default {
|
|
|
50
46
|
type: Boolean,
|
|
51
47
|
default: false,
|
|
52
48
|
},
|
|
53
|
-
|
|
54
49
|
addLabel: {
|
|
55
50
|
type: String,
|
|
56
51
|
default() {
|
|
@@ -61,7 +56,6 @@ export default {
|
|
|
61
56
|
type: Boolean,
|
|
62
57
|
default: true,
|
|
63
58
|
},
|
|
64
|
-
|
|
65
59
|
removeLabel: {
|
|
66
60
|
type: String,
|
|
67
61
|
default() {
|
|
@@ -72,22 +66,18 @@ export default {
|
|
|
72
66
|
type: Boolean,
|
|
73
67
|
default: true,
|
|
74
68
|
},
|
|
75
|
-
|
|
76
69
|
defaultAddValue: {
|
|
77
70
|
type: [String, Number, Object, Array],
|
|
78
71
|
default: ''
|
|
79
72
|
},
|
|
80
|
-
|
|
81
73
|
loading: {
|
|
82
74
|
type: Boolean,
|
|
83
75
|
default: false
|
|
84
76
|
},
|
|
85
|
-
|
|
86
77
|
disabled: {
|
|
87
78
|
type: Boolean,
|
|
88
79
|
default: false,
|
|
89
80
|
},
|
|
90
|
-
|
|
91
81
|
rules: {
|
|
92
82
|
default: () => [],
|
|
93
83
|
type: Array,
|
|
@@ -95,7 +85,6 @@ export default {
|
|
|
95
85
|
validator: rules => rules.every(rule => ['function'].includes(typeof rule))
|
|
96
86
|
}
|
|
97
87
|
},
|
|
98
|
-
|
|
99
88
|
data() {
|
|
100
89
|
const input = (this.value || []).slice();
|
|
101
90
|
const rows = [];
|
|
@@ -103,7 +92,6 @@ export default {
|
|
|
103
92
|
for ( const value of input ) {
|
|
104
93
|
rows.push({ value });
|
|
105
94
|
}
|
|
106
|
-
|
|
107
95
|
if ( !rows.length && this.initialEmptyRow ) {
|
|
108
96
|
const value = this.defaultAddValue ? clone(this.defaultAddValue) : '';
|
|
109
97
|
|
|
@@ -112,24 +100,19 @@ export default {
|
|
|
112
100
|
|
|
113
101
|
return { rows, lastUpdateWasFromValue: false };
|
|
114
102
|
},
|
|
115
|
-
|
|
116
103
|
computed: {
|
|
117
104
|
isView() {
|
|
118
105
|
return this.mode === _VIEW;
|
|
119
106
|
},
|
|
120
|
-
|
|
121
107
|
showAdd() {
|
|
122
108
|
return this.addAllowed;
|
|
123
109
|
},
|
|
124
|
-
|
|
125
110
|
showRemove() {
|
|
126
111
|
return this.removeAllowed;
|
|
127
112
|
},
|
|
128
|
-
|
|
129
113
|
isDefaultProtip() {
|
|
130
114
|
return this.protip === DEFAULT_PROTIP;
|
|
131
115
|
},
|
|
132
|
-
|
|
133
116
|
showProtip() {
|
|
134
117
|
if (this.protip && !this.isDefaultProtip) {
|
|
135
118
|
return true;
|
|
@@ -138,7 +121,6 @@ export default {
|
|
|
138
121
|
return !this.valueMultiline && this.protip;
|
|
139
122
|
}
|
|
140
123
|
},
|
|
141
|
-
|
|
142
124
|
watch: {
|
|
143
125
|
value() {
|
|
144
126
|
this.lastUpdateWasFromValue = true;
|
|
@@ -156,29 +138,24 @@ export default {
|
|
|
156
138
|
}
|
|
157
139
|
}
|
|
158
140
|
},
|
|
159
|
-
|
|
160
141
|
created() {
|
|
161
142
|
this.queueUpdate = debounce(this.update, 50);
|
|
162
143
|
},
|
|
163
|
-
|
|
164
144
|
methods: {
|
|
165
145
|
add() {
|
|
166
146
|
this.rows.push({ value: clone(this.defaultAddValue) });
|
|
167
147
|
if (this.defaultAddValue) {
|
|
168
148
|
this.queueUpdate();
|
|
169
149
|
}
|
|
170
|
-
|
|
171
150
|
this.$nextTick(() => {
|
|
172
151
|
const inputs = this.$refs.value;
|
|
173
152
|
|
|
174
153
|
if ( inputs && inputs.length > 0 ) {
|
|
175
154
|
inputs[inputs.length - 1].focus();
|
|
176
155
|
}
|
|
177
|
-
|
|
178
156
|
this.$emit('add');
|
|
179
157
|
});
|
|
180
158
|
},
|
|
181
|
-
|
|
182
159
|
/**
|
|
183
160
|
* Remove item and emits removed row and its own index value
|
|
184
161
|
*/
|
|
@@ -187,12 +164,10 @@ export default {
|
|
|
187
164
|
removeAt(this.rows, index);
|
|
188
165
|
this.queueUpdate();
|
|
189
166
|
},
|
|
190
|
-
|
|
191
167
|
update() {
|
|
192
168
|
if ( this.isView ) {
|
|
193
169
|
return;
|
|
194
170
|
}
|
|
195
|
-
|
|
196
171
|
const out = [];
|
|
197
172
|
|
|
198
173
|
for ( const row of this.rows ) {
|
|
@@ -203,15 +178,12 @@ export default {
|
|
|
203
178
|
out.push(value);
|
|
204
179
|
}
|
|
205
180
|
}
|
|
206
|
-
|
|
207
181
|
this.$emit('input', out);
|
|
208
182
|
},
|
|
209
|
-
|
|
210
183
|
onPaste(index, event) {
|
|
211
184
|
if (this.valueMultiline) {
|
|
212
185
|
return;
|
|
213
186
|
}
|
|
214
|
-
|
|
215
187
|
event.preventDefault();
|
|
216
188
|
const text = event.clipboardData.getData('text/plain');
|
|
217
189
|
const split = text.split('\n').map(value => ({ value }));
|
|
@@ -252,6 +224,7 @@ export default {
|
|
|
252
224
|
<div
|
|
253
225
|
v-for="(row, idx) in rows"
|
|
254
226
|
:key="idx"
|
|
227
|
+
data-testid="array-list-box"
|
|
255
228
|
class="box"
|
|
256
229
|
>
|
|
257
230
|
<slot
|
|
@@ -349,7 +322,7 @@ export default {
|
|
|
349
322
|
type="button"
|
|
350
323
|
class="btn role-tertiary add"
|
|
351
324
|
:disabled="loading"
|
|
352
|
-
data-testid="
|
|
325
|
+
data-testid="array-list-button"
|
|
353
326
|
@click="add()"
|
|
354
327
|
>
|
|
355
328
|
<i
|
|
@@ -366,14 +339,11 @@ export default {
|
|
|
366
339
|
<style lang="scss" scoped>
|
|
367
340
|
.title {
|
|
368
341
|
margin-bottom: 10px;
|
|
369
|
-
|
|
370
342
|
}
|
|
371
|
-
|
|
372
343
|
.box {
|
|
373
344
|
display: grid;
|
|
374
345
|
grid-template-columns: auto $array-list-remove-margin;
|
|
375
346
|
align-items: center;
|
|
376
|
-
|
|
377
347
|
margin-bottom: 10px;
|
|
378
348
|
.value {
|
|
379
349
|
flex: 1;
|
|
@@ -382,11 +352,9 @@ export default {
|
|
|
382
352
|
}
|
|
383
353
|
}
|
|
384
354
|
}
|
|
385
|
-
|
|
386
355
|
.remove {
|
|
387
356
|
text-align: right;
|
|
388
357
|
}
|
|
389
|
-
|
|
390
358
|
.footer {
|
|
391
359
|
.protip {
|
|
392
360
|
float: right;
|
|
@@ -4,6 +4,7 @@ import InfoBox from '@shell/components/InfoBox';
|
|
|
4
4
|
import { _EDIT, _VIEW } from '@shell/config/query-params';
|
|
5
5
|
|
|
6
6
|
export default {
|
|
7
|
+
name: 'ArrayListGrouped',
|
|
7
8
|
components: { ArrayList, InfoBox },
|
|
8
9
|
props: {
|
|
9
10
|
/**
|
|
@@ -21,6 +22,13 @@ export default {
|
|
|
21
22
|
type: Boolean,
|
|
22
23
|
default: true,
|
|
23
24
|
},
|
|
25
|
+
/**
|
|
26
|
+
* Start with empty row
|
|
27
|
+
*/
|
|
28
|
+
initialEmptyRow: {
|
|
29
|
+
type: Boolean,
|
|
30
|
+
default: false,
|
|
31
|
+
},
|
|
24
32
|
|
|
25
33
|
/**
|
|
26
34
|
* Form mode for the component
|
|
@@ -51,7 +59,7 @@ export default {
|
|
|
51
59
|
}
|
|
52
60
|
|
|
53
61
|
return this.canRemove;
|
|
54
|
-
}
|
|
62
|
+
},
|
|
55
63
|
}
|
|
56
64
|
};
|
|
57
65
|
</script>
|
|
@@ -62,6 +70,7 @@ export default {
|
|
|
62
70
|
v-bind="$attrs"
|
|
63
71
|
:add-allowed="canAdd && !isView"
|
|
64
72
|
:mode="mode"
|
|
73
|
+
:initial-empty-row="initialEmptyRow"
|
|
65
74
|
@input="$emit('input', $event)"
|
|
66
75
|
@add="$emit('add')"
|
|
67
76
|
@remove="$emit('remove', $event)"
|
|
@@ -79,7 +88,7 @@ export default {
|
|
|
79
88
|
:data-testid="`remove-item-${scope.i}`"
|
|
80
89
|
@click="scope.remove"
|
|
81
90
|
>
|
|
82
|
-
<i class="icon icon-
|
|
91
|
+
<i class="icon icon-x" />
|
|
83
92
|
</button>
|
|
84
93
|
<span v-else />
|
|
85
94
|
</template>
|
|
@@ -105,15 +114,15 @@ export default {
|
|
|
105
114
|
& > .remove {
|
|
106
115
|
position: absolute;
|
|
107
116
|
|
|
108
|
-
padding: 0px;
|
|
109
|
-
|
|
110
117
|
top: 0;
|
|
111
118
|
right: 0;
|
|
112
119
|
}
|
|
113
120
|
|
|
114
121
|
& > .info-box {
|
|
115
122
|
margin-bottom: 0;
|
|
123
|
+
padding-right: 25px;
|
|
116
124
|
}
|
|
117
125
|
}
|
|
118
126
|
}
|
|
127
|
+
|
|
119
128
|
</style>
|
|
@@ -65,11 +65,11 @@ export default {
|
|
|
65
65
|
@input="$emit('input', $event)"
|
|
66
66
|
>
|
|
67
67
|
<template v-slot:columns="scope">
|
|
68
|
-
<Select
|
|
69
|
-
:value="scope.row.value"
|
|
70
|
-
v-bind="selectProps"
|
|
71
|
-
:options="calculateOptions(scope.row.value)"
|
|
72
|
-
@input="updateRow(scope.i, $event)"
|
|
68
|
+
<Select
|
|
69
|
+
:value="scope.row.value"
|
|
70
|
+
v-bind="selectProps"
|
|
71
|
+
:options="calculateOptions(scope.row.value)"
|
|
72
|
+
@input="updateRow(scope.i, $event)"
|
|
73
73
|
/>
|
|
74
74
|
</template>
|
|
75
75
|
</ArrayList>
|
|
@@ -15,6 +15,13 @@ export default Vue.extend<any, any, any, any>({
|
|
|
15
15
|
default: () => [],
|
|
16
16
|
type: Array as PropType<Rule[]>,
|
|
17
17
|
},
|
|
18
|
+
/**
|
|
19
|
+
* Add icon for the banner
|
|
20
|
+
*/
|
|
21
|
+
icon: {
|
|
22
|
+
type: String,
|
|
23
|
+
default: null
|
|
24
|
+
},
|
|
18
25
|
asBanner: {
|
|
19
26
|
default: false,
|
|
20
27
|
type: Boolean
|
|
@@ -49,6 +56,7 @@ export default Vue.extend<any, any, any, any>({
|
|
|
49
56
|
v-if="!!asBanner && !!validationMessage"
|
|
50
57
|
color="error"
|
|
51
58
|
:label="validationMessage"
|
|
59
|
+
:icon="icon"
|
|
52
60
|
/>
|
|
53
61
|
<span
|
|
54
62
|
v-else-if="!!validationMessage"
|
|
@@ -96,6 +96,20 @@ export default {
|
|
|
96
96
|
return this.$store.getters['i18n/t']('keyValue.keyPlaceholder');
|
|
97
97
|
},
|
|
98
98
|
},
|
|
99
|
+
/**
|
|
100
|
+
* List of keys which needs to be disabled and hidden based on toggler
|
|
101
|
+
*/
|
|
102
|
+
protectedKeys: {
|
|
103
|
+
type: Array,
|
|
104
|
+
default: () => [],
|
|
105
|
+
},
|
|
106
|
+
/**
|
|
107
|
+
* Conditionally display protected keys, if any
|
|
108
|
+
*/
|
|
109
|
+
toggleFilter: {
|
|
110
|
+
type: Boolean,
|
|
111
|
+
default: false,
|
|
112
|
+
},
|
|
99
113
|
separatorLabel: {
|
|
100
114
|
type: String,
|
|
101
115
|
default: '',
|
|
@@ -235,7 +249,6 @@ export default {
|
|
|
235
249
|
},
|
|
236
250
|
|
|
237
251
|
computed: {
|
|
238
|
-
|
|
239
252
|
isView() {
|
|
240
253
|
return this.mode === _VIEW;
|
|
241
254
|
},
|
|
@@ -261,6 +274,12 @@ export default {
|
|
|
261
274
|
*/
|
|
262
275
|
canRemove() {
|
|
263
276
|
return !this.isView && this.removeAllowed;
|
|
277
|
+
},
|
|
278
|
+
/**
|
|
279
|
+
* Filter rows based on toggler, keeping to still emit all the values
|
|
280
|
+
*/
|
|
281
|
+
filteredRows() {
|
|
282
|
+
return this.rows.filter(row => !(this.isProtected(row.key) && !this.toggleFilter));
|
|
264
283
|
}
|
|
265
284
|
},
|
|
266
285
|
created() {
|
|
@@ -275,6 +294,10 @@ export default {
|
|
|
275
294
|
}
|
|
276
295
|
},
|
|
277
296
|
methods: {
|
|
297
|
+
isProtected(key) {
|
|
298
|
+
return this.protectedKeys && this.protectedKeys.includes(key);
|
|
299
|
+
},
|
|
300
|
+
|
|
278
301
|
getRows(value) {
|
|
279
302
|
const rows = [];
|
|
280
303
|
|
|
@@ -325,7 +348,7 @@ export default {
|
|
|
325
348
|
rows.push(entry);
|
|
326
349
|
}
|
|
327
350
|
}
|
|
328
|
-
if ( !rows.length && this.initialEmptyRow ) {
|
|
351
|
+
if ( rows && !rows.length && this.initialEmptyRow ) {
|
|
329
352
|
rows.push({
|
|
330
353
|
[this.keyName]: '',
|
|
331
354
|
[this.valueName]: '',
|
|
@@ -389,6 +412,10 @@ export default {
|
|
|
389
412
|
this.add(key, value);
|
|
390
413
|
}
|
|
391
414
|
});
|
|
415
|
+
|
|
416
|
+
if (lines.length > 0) {
|
|
417
|
+
this.removeEmptyRows();
|
|
418
|
+
}
|
|
392
419
|
}
|
|
393
420
|
},
|
|
394
421
|
download(idx, ev) {
|
|
@@ -550,9 +577,10 @@ export default {
|
|
|
550
577
|
</div>
|
|
551
578
|
</template>
|
|
552
579
|
<template
|
|
553
|
-
v-for="(row,i) in
|
|
580
|
+
v-for="(row,i) in filteredRows"
|
|
554
581
|
v-else
|
|
555
582
|
>
|
|
583
|
+
<!-- Key -->
|
|
556
584
|
<div
|
|
557
585
|
:key="i+'key'"
|
|
558
586
|
class="kv-item key"
|
|
@@ -570,6 +598,7 @@ export default {
|
|
|
570
598
|
ref="key"
|
|
571
599
|
v-model="row[keyName]"
|
|
572
600
|
:searchable="true"
|
|
601
|
+
:disabled="isProtected(row.key)"
|
|
573
602
|
:clearable="false"
|
|
574
603
|
:taggable="keyTaggable"
|
|
575
604
|
:options="calculateOptions(row[keyName])"
|
|
@@ -579,13 +608,15 @@ export default {
|
|
|
579
608
|
v-else
|
|
580
609
|
ref="key"
|
|
581
610
|
v-model="row[keyName]"
|
|
582
|
-
:disabled="isView || !keyEditable"
|
|
611
|
+
:disabled="isView || !keyEditable || isProtected(row.key)"
|
|
583
612
|
:placeholder="keyPlaceholder"
|
|
584
613
|
@input="queueUpdate"
|
|
585
614
|
@paste="onPaste(i, $event)"
|
|
586
615
|
>
|
|
587
616
|
</slot>
|
|
588
617
|
</div>
|
|
618
|
+
|
|
619
|
+
<!-- Value -->
|
|
589
620
|
<div
|
|
590
621
|
:key="i+'value'"
|
|
591
622
|
class="kv-item value"
|
|
@@ -608,6 +639,7 @@ export default {
|
|
|
608
639
|
v-else-if="valueMultiline"
|
|
609
640
|
v-model="row[valueName]"
|
|
610
641
|
:class="{'conceal': valueConcealed}"
|
|
642
|
+
:disabled="isProtected(row.key)"
|
|
611
643
|
:mode="mode"
|
|
612
644
|
:placeholder="valuePlaceholder"
|
|
613
645
|
:min-height="40"
|
|
@@ -617,7 +649,7 @@ export default {
|
|
|
617
649
|
<input
|
|
618
650
|
v-else
|
|
619
651
|
v-model="row[valueName]"
|
|
620
|
-
:disabled="isView"
|
|
652
|
+
:disabled="isView || isProtected(row.key)"
|
|
621
653
|
:type="valueConcealed ? 'password' : 'text'"
|
|
622
654
|
:placeholder="valuePlaceholder"
|
|
623
655
|
autocorrect="off"
|
|
@@ -652,7 +684,7 @@ export default {
|
|
|
652
684
|
>
|
|
653
685
|
<button
|
|
654
686
|
type="button"
|
|
655
|
-
:disabled="isView"
|
|
687
|
+
:disabled="isView || isProtected(row.key)"
|
|
656
688
|
class="btn role-link"
|
|
657
689
|
@click="remove(i)"
|
|
658
690
|
>
|
|
@@ -664,7 +696,7 @@ export default {
|
|
|
664
696
|
</div>
|
|
665
697
|
<div
|
|
666
698
|
v-if="(addAllowed || readAllowed) && !isView"
|
|
667
|
-
class="footer"
|
|
699
|
+
class="footer mt-20"
|
|
668
700
|
>
|
|
669
701
|
<slot
|
|
670
702
|
name="add"
|
|
@@ -150,6 +150,10 @@ export default {
|
|
|
150
150
|
this.resizeHandler();
|
|
151
151
|
},
|
|
152
152
|
|
|
153
|
+
onClose() {
|
|
154
|
+
this.$emit('on-close');
|
|
155
|
+
},
|
|
156
|
+
|
|
153
157
|
getOptionLabel(option) {
|
|
154
158
|
if (!option) {
|
|
155
159
|
return;
|
|
@@ -277,6 +281,7 @@ export default {
|
|
|
277
281
|
@search:focus="onFocus"
|
|
278
282
|
@search="onSearch"
|
|
279
283
|
@open="onOpen"
|
|
284
|
+
@close="onClose"
|
|
280
285
|
@option:selected="$emit('selecting', $event)"
|
|
281
286
|
>
|
|
282
287
|
<template #option="option">
|
|
@@ -456,9 +461,7 @@ export default {
|
|
|
456
461
|
|
|
457
462
|
::v-deep .vs__actions {
|
|
458
463
|
&:after {
|
|
459
|
-
line-height: 1.85rem;
|
|
460
464
|
position: relative;
|
|
461
|
-
right: 3px;
|
|
462
465
|
top: -10px;
|
|
463
466
|
}
|
|
464
467
|
}
|
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
<script>
|
|
2
2
|
import KeyValue from '@shell/components/form/KeyValue';
|
|
3
|
+
import { ToggleSwitch } from '@components/Form/ToggleSwitch';
|
|
3
4
|
|
|
4
5
|
export default {
|
|
5
|
-
components: {
|
|
6
|
+
components: {
|
|
7
|
+
ToggleSwitch,
|
|
8
|
+
KeyValue
|
|
9
|
+
},
|
|
6
10
|
|
|
7
11
|
props: {
|
|
8
12
|
value: {
|
|
@@ -41,6 +45,10 @@ export default {
|
|
|
41
45
|
}
|
|
42
46
|
},
|
|
43
47
|
|
|
48
|
+
data() {
|
|
49
|
+
return { toggler: false };
|
|
50
|
+
},
|
|
51
|
+
|
|
44
52
|
computed: {
|
|
45
53
|
containerClass() {
|
|
46
54
|
return `${ this.displaySideBySide ? 'row' : '' } ${ this.defaultContainerClass }`.trim();
|
|
@@ -48,24 +56,41 @@ export default {
|
|
|
48
56
|
|
|
49
57
|
sectionClass() {
|
|
50
58
|
return `${ this.displaySideBySide ? 'col span-6' : 'row' } ${ this.defaultSectionClass }`.trim();
|
|
51
|
-
}
|
|
59
|
+
},
|
|
60
|
+
|
|
52
61
|
}
|
|
53
62
|
};
|
|
54
63
|
</script>
|
|
55
64
|
<template>
|
|
56
65
|
<div :class="containerClass">
|
|
57
|
-
<div
|
|
58
|
-
<
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
66
|
+
<div class="labels">
|
|
67
|
+
<div class="labels__header">
|
|
68
|
+
<h3>
|
|
69
|
+
<t k="labels.labels.title" />
|
|
70
|
+
</h3>
|
|
71
|
+
<ToggleSwitch
|
|
72
|
+
v-if="value.hasSystemLabels"
|
|
73
|
+
v-model="toggler"
|
|
74
|
+
name="label-system-toggle"
|
|
75
|
+
:on-label="t('labels.labels.show')"
|
|
76
|
+
/>
|
|
77
|
+
</div>
|
|
78
|
+
<p class="mt-10 mb-10">
|
|
79
|
+
<t k="labels.labels.description" />
|
|
80
|
+
</p>
|
|
81
|
+
<div :class="sectionClass">
|
|
82
|
+
<KeyValue
|
|
83
|
+
key="labels"
|
|
84
|
+
:value="value.labels"
|
|
85
|
+
:protected-keys="value.systemLabels || []"
|
|
86
|
+
:toggle-filter="toggler"
|
|
87
|
+
:add-label="t('labels.addLabel')"
|
|
88
|
+
:mode="mode"
|
|
89
|
+
:read-allowed="false"
|
|
90
|
+
:value-can-be-empty="true"
|
|
91
|
+
@input="value.setLabels($event)"
|
|
92
|
+
/>
|
|
93
|
+
</div>
|
|
69
94
|
</div>
|
|
70
95
|
<div class="spacer" />
|
|
71
96
|
<div :class="sectionClass">
|
|
@@ -84,6 +109,11 @@ export default {
|
|
|
84
109
|
</div>
|
|
85
110
|
</template>
|
|
86
111
|
|
|
87
|
-
<style scoped>
|
|
88
|
-
|
|
112
|
+
<style lang="scss" scoped>
|
|
113
|
+
.labels {
|
|
114
|
+
&__header {
|
|
115
|
+
display: flex;
|
|
116
|
+
justify-content: space-between;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
89
119
|
</style>
|
|
@@ -213,9 +213,9 @@ export default {
|
|
|
213
213
|
</script>
|
|
214
214
|
<template>
|
|
215
215
|
<Loading v-if="$fetchState.pending" />
|
|
216
|
-
<div
|
|
217
|
-
v-else
|
|
218
|
-
class="cluster-permissions-editor"
|
|
216
|
+
<div
|
|
217
|
+
v-else
|
|
218
|
+
class="cluster-permissions-editor"
|
|
219
219
|
>
|
|
220
220
|
<div class="row mt-10">
|
|
221
221
|
<div class="col span-12">
|
|
@@ -229,10 +229,10 @@ export default {
|
|
|
229
229
|
</div>
|
|
230
230
|
</div>
|
|
231
231
|
|
|
232
|
-
<Card
|
|
233
|
-
class="m-0"
|
|
234
|
-
:show-highlight-border="false"
|
|
235
|
-
:show-actions="false"
|
|
232
|
+
<Card
|
|
233
|
+
class="m-0"
|
|
234
|
+
:show-highlight-border="false"
|
|
235
|
+
:show-actions="false"
|
|
236
236
|
>
|
|
237
237
|
<template v-slot:title>
|
|
238
238
|
<div class="type-title">
|
|
@@ -248,17 +248,17 @@ export default {
|
|
|
248
248
|
:options="options"
|
|
249
249
|
name="permission-group"
|
|
250
250
|
/>
|
|
251
|
-
<div
|
|
252
|
-
v-if="permissionGroup === 'custom'"
|
|
253
|
-
class="custom-permissions ml-20 mt-10"
|
|
254
|
-
:class="{'two-column': useTwoColumnsForCustom}"
|
|
251
|
+
<div
|
|
252
|
+
v-if="permissionGroup === 'custom'"
|
|
253
|
+
class="custom-permissions ml-20 mt-10"
|
|
254
|
+
:class="{'two-column': useTwoColumnsForCustom}"
|
|
255
255
|
>
|
|
256
|
-
<Checkbox
|
|
257
|
-
v-for="permission in customPermissions"
|
|
258
|
-
:key="permission.key"
|
|
259
|
-
v-model="permission.value"
|
|
260
|
-
class="mb-5"
|
|
261
|
-
:label="permission.label"
|
|
256
|
+
<Checkbox
|
|
257
|
+
v-for="permission in customPermissions"
|
|
258
|
+
:key="permission.key"
|
|
259
|
+
v-model="permission.value"
|
|
260
|
+
class="mb-5"
|
|
261
|
+
:label="permission.label"
|
|
262
262
|
/>
|
|
263
263
|
</div>
|
|
264
264
|
</template>
|
|
@@ -138,9 +138,9 @@ export default {
|
|
|
138
138
|
methods: {
|
|
139
139
|
addMember() {
|
|
140
140
|
this.$store.dispatch('cluster/promptModal', {
|
|
141
|
-
component:
|
|
142
|
-
|
|
143
|
-
modalSticky:
|
|
141
|
+
component: this.addMemberDialogName,
|
|
142
|
+
componentProps: { onAdd: this.onAddMember },
|
|
143
|
+
modalSticky: this.modalSticky
|
|
144
144
|
});
|
|
145
145
|
},
|
|
146
146
|
|
|
@@ -173,9 +173,9 @@ export default {
|
|
|
173
173
|
<template #columns="{row}">
|
|
174
174
|
<div class="columns row">
|
|
175
175
|
<div class="col span-6">
|
|
176
|
-
<Principal
|
|
177
|
-
:key="row.value.principalId"
|
|
178
|
-
:value="row.value.principalId"
|
|
176
|
+
<Principal
|
|
177
|
+
:key="row.value.principalId"
|
|
178
|
+
:value="row.value.principalId"
|
|
179
179
|
/>
|
|
180
180
|
</div>
|
|
181
181
|
<div class="col span-6 role">
|
|
@@ -194,12 +194,12 @@ export default {
|
|
|
194
194
|
</template>
|
|
195
195
|
<template #remove-button="{remove, i}">
|
|
196
196
|
<span v-if="(isCreate && i === 0) || isView" />
|
|
197
|
-
<button
|
|
198
|
-
v-else
|
|
199
|
-
type="button"
|
|
200
|
-
:disabled="isView"
|
|
201
|
-
class="btn role-link"
|
|
202
|
-
@click="remove"
|
|
197
|
+
<button
|
|
198
|
+
v-else
|
|
199
|
+
type="button"
|
|
200
|
+
:disabled="isView"
|
|
201
|
+
class="btn role-link"
|
|
202
|
+
@click="remove"
|
|
203
203
|
>
|
|
204
204
|
{{ t('generic.remove') }}
|
|
205
205
|
</button>
|