@rancher/shell 0.3.14 → 0.3.15
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/images/providers/nutanix.svg +1 -0
- package/assets/translations/en-us.yaml +83 -2
- package/chart/gatekeeper.vue +2 -2
- package/chart/monitoring/alerting/index.vue +3 -3
- package/chart/monitoring/index.vue +2 -2
- package/chart/monitoring/prometheus/index.vue +1 -1
- package/chart/rancher-backup/index.vue +2 -2
- package/cloud-credential/harvester.vue +2 -2
- package/components/AssignTo.vue +1 -1
- package/components/AwsComplianceBanner.vue +1 -1
- package/components/BackLink.vue +7 -0
- package/components/BrandImage.vue +3 -3
- package/components/ClusterProviderIcon.vue +1 -1
- package/components/CommunityLinks.vue +2 -2
- package/components/ConsumptionGauge.vue +17 -2
- package/components/CruResource.vue +2 -1
- package/components/DashboardMetrics.vue +8 -0
- package/components/DetailTop.vue +1 -1
- package/components/ExplorerMembers.vue +8 -8
- package/components/ExplorerProjectsNamespaces.vue +9 -9
- package/components/FixedBanner.vue +1 -1
- package/components/GlobalRoleBindings.vue +11 -11
- package/components/GrafanaDashboard.vue +7 -1
- package/components/GrowlManager.vue +1 -1
- package/components/HarvesterServiceAddOnConfig.vue +4 -3
- package/components/IconOrSvg.vue +10 -3
- package/components/LandingPagePreference.vue +2 -2
- package/components/MoveModal.vue +1 -1
- package/components/PodSecurityAdmission.vue +3 -3
- package/components/ProgressBarMulti.vue +2 -2
- package/components/PromptRemove.vue +52 -28
- package/components/PromptRestore.vue +3 -3
- package/components/Questions/index.vue +5 -5
- package/components/RelatedWorkloadsTable.vue +1 -1
- package/components/ResourceList/Masthead.vue +1 -1
- package/components/ResourceTable.vue +3 -3
- package/components/ResourceYaml.vue +1 -1
- package/components/RoleBindings.vue +2 -2
- package/components/SingleClusterInfo.vue +1 -1
- package/components/SortableTable/actions.js +3 -3
- package/components/SortableTable/advanced-filtering.js +7 -7
- package/components/SortableTable/filtering.js +1 -1
- package/components/SortableTable/index.vue +9 -9
- package/components/SortableTable/selection.js +5 -5
- package/components/SortableTable/sorting.js +5 -5
- package/components/Tabbed/index.vue +7 -7
- package/components/TableSparkLine.vue +1 -1
- package/components/Wizard.vue +11 -23
- package/components/__tests__/Collapse.spec.ts +1 -1
- package/components/__tests__/CruResource.test.ts +74 -0
- package/components/__tests__/SimpleBox.spec.ts +1 -1
- package/components/auth/RoleDetailEdit.vue +7 -3
- package/components/auth/SelectPrincipal.vue +3 -3
- package/components/fleet/FleetResources.vue +1 -1
- package/components/fleet/FleetStatus.vue +4 -4
- package/components/fleet/FleetSummary.vue +1 -1
- package/components/fleet/ForceDirectedTreeChart/chartIcons.js +1 -1
- package/components/fleet/ForceDirectedTreeChart/index.vue +1 -1
- package/components/form/ArrayList.vue +11 -3
- package/components/form/ArrayListSelect.vue +2 -2
- package/components/form/FileSelector.vue +6 -0
- package/components/form/GitPicker.vue +528 -0
- package/components/form/KeyValue.vue +82 -41
- package/components/form/LabeledSelect.vue +2 -2
- package/components/form/MatchExpressions.vue +2 -2
- package/components/form/Members/ClusterMembershipEditor.vue +1 -2
- package/components/form/Members/ClusterPermissionsEditor.vue +6 -5
- package/components/form/Members/MembershipEditor.vue +4 -4
- package/components/form/Members/ProjectMembershipEditor.vue +1 -2
- package/components/form/NameNsDescription.vue +13 -6
- package/components/form/Networking.vue +2 -2
- package/components/form/NodeScheduling.vue +1 -1
- package/components/form/PodAffinity.vue +1 -1
- package/components/form/ProjectMemberEditor.vue +4 -4
- package/components/form/ResourceQuota/Namespace.vue +2 -2
- package/components/form/ResourceQuota/NamespaceRow.vue +2 -2
- package/components/form/ResourceQuota/Project.vue +1 -1
- package/components/form/ResourceQuota/shared.js +2 -2
- package/components/form/ResourceSelector.vue +1 -1
- package/components/form/ResourceTabs/index.vue +1 -1
- package/components/form/RuleSelector.vue +1 -1
- package/components/form/SecretSelector.vue +4 -4
- package/components/form/Select.vue +2 -2
- package/components/form/SelectOrCreateAuthSecret.vue +3 -3
- package/components/form/ServiceNameSelect.vue +1 -1
- package/components/form/ServicePorts.vue +1 -1
- package/components/form/ShellInput.vue +1 -1
- package/components/form/SimpleSecretSelector.vue +4 -4
- package/components/form/Taints.vue +1 -1
- package/components/form/ValueFromResource.vue +3 -3
- package/components/form/WorkloadPorts.vue +8 -7
- package/components/form/__tests__/Error.test.ts +1 -1
- package/components/form/__tests__/KeyValue.test.ts +21 -0
- package/components/formatter/ClusterLink.vue +1 -1
- package/components/formatter/ClusterProvider.vue +13 -2
- package/components/formatter/Endpoints.vue +1 -1
- package/components/formatter/FleetSummaryGraph.vue +2 -2
- package/components/formatter/IngressTarget.vue +2 -2
- package/components/formatter/PodImages.vue +1 -1
- package/components/formatter/PrincipalGroupBindings.vue +1 -1
- package/components/formatter/ReceiverIcons.vue +3 -3
- package/components/formatter/ServiceType.vue +1 -1
- package/components/formatter/WorkloadDetailEndpoints.vue +1 -1
- package/components/formatter/WorkloadHealthScale.vue +1 -1
- package/components/formatter/__tests__/LiveDate.test.ts +1 -1
- package/components/graph/Bar.vue +1 -1
- package/components/graph/LinePlot.vue +3 -3
- package/components/nav/Group.vue +2 -2
- package/components/nav/Header.vue +5 -5
- package/components/nav/NamespaceFilter.vue +14 -14
- package/components/nav/TopLevelMenu.vue +76 -11
- package/components/nav/WindowManager/ContainerLogs.vue +2 -2
- package/components/nav/WindowManager/ContainerShell.vue +1 -1
- package/components/nav/WorkspaceSwitcher.vue +1 -1
- package/config/home-links.js +4 -4
- package/config/labels-annotations.js +8 -9
- package/config/pod-security-admission.ts +1 -1
- package/config/product/auth.js +4 -4
- package/config/product/explorer.js +14 -0
- package/config/router.js +5 -0
- package/config/store.js +2 -0
- package/config/table-headers.js +13 -13
- package/config/uiplugins.js +8 -1
- package/core/plugin-routes.ts +3 -2
- package/core/plugin.ts +3 -3
- package/core/plugins.js +7 -7
- package/creators/pkg/files/index.ts +1 -1
- package/detail/cis.cattle.io.clusterscan.vue +3 -3
- package/detail/fleet.cattle.io.bundle.vue +1 -1
- package/detail/helm.cattle.io.projecthelmchart.vue +16 -29
- package/detail/management.cattle.io.user.vue +12 -12
- package/detail/namespace.vue +4 -4
- package/detail/networking.k8s.io.ingress.vue +3 -3
- package/detail/node.vue +2 -2
- package/detail/provisioning.cattle.io.cluster.vue +9 -10
- package/detail/service.vue +1 -1
- package/detail/workload/index.vue +3 -3
- package/dialog/AddProjectMemberDialog.vue +2 -2
- package/dialog/DrainNode.vue +1 -1
- package/dialog/GenericPrompt.vue +9 -5
- package/dialog/RotateEncryptionKeyDialog.vue +2 -2
- package/dialog/ScaleMachineDownDialog.vue +2 -2
- package/edit/auth/azuread.vue +3 -3
- package/edit/autoscaling.horizontalpodautoscaler/index.vue +5 -5
- package/edit/cis.cattle.io.clusterscan.vue +5 -5
- package/edit/cloudcredential.vue +4 -4
- package/edit/constraints.gatekeeper.sh.constraint/NamespaceList.vue +1 -1
- package/edit/constraints.gatekeeper.sh.constraint/index.vue +4 -4
- package/edit/fleet.cattle.io.gitrepo.vue +6 -6
- package/edit/helm.cattle.io.projecthelmchart.vue +3 -3
- package/edit/logging-flow/index.vue +4 -4
- package/edit/logging.banzaicloud.io.output/index.vue +3 -3
- package/edit/logging.banzaicloud.io.output/providers/elasticsearch.vue +1 -1
- package/edit/logging.banzaicloud.io.output/providers/forward.vue +1 -1
- package/edit/logging.banzaicloud.io.output/providers/logz.vue +1 -1
- package/edit/logging.banzaicloud.io.output/providers/opensearch.vue +1 -1
- package/edit/logging.banzaicloud.io.output/providers/redis.vue +1 -1
- package/edit/logging.banzaicloud.io.output/providers/splunkHec.vue +1 -1
- package/edit/management.cattle.io.clusterroletemplatebinding.vue +1 -1
- package/edit/management.cattle.io.podsecurityadmissionconfigurationtemplate.vue +1 -1
- package/edit/management.cattle.io.project.vue +3 -3
- package/edit/management.cattle.io.projectroletemplatebinding.vue +2 -2
- package/edit/management.cattle.io.setting.vue +1 -1
- package/edit/management.cattle.io.user.vue +2 -2
- package/edit/monitoring.coreos.com.alertmanagerconfig/auth.vue +2 -2
- package/edit/monitoring.coreos.com.alertmanagerconfig/index.vue +1 -1
- package/edit/monitoring.coreos.com.alertmanagerconfig/receiverConfig.vue +1 -1
- package/edit/monitoring.coreos.com.alertmanagerconfig/types/opsgenie.vue +3 -3
- package/edit/monitoring.coreos.com.prometheusrule/GroupRules.vue +5 -5
- package/edit/monitoring.coreos.com.prometheusrule/duration.js +1 -1
- package/edit/monitoring.coreos.com.receiver/auth.vue +2 -2
- package/edit/monitoring.coreos.com.receiver/tls.vue +3 -4
- package/edit/monitoring.coreos.com.receiver/types/__tests__/email.test.ts +53 -0
- package/edit/monitoring.coreos.com.receiver/types/email.vue +2 -0
- package/edit/monitoring.coreos.com.receiver/types/opsgenie.vue +3 -3
- package/edit/monitoring.coreos.com.receiver/types/webhook.add.vue +1 -1
- package/edit/monitoring.coreos.com.route.vue +2 -2
- package/edit/namespace.vue +21 -13
- package/edit/networking.k8s.io.ingress/Certificate.vue +2 -2
- package/edit/networking.k8s.io.ingress/DefaultBackend.vue +2 -2
- package/edit/networking.k8s.io.ingress/RulePath.vue +2 -2
- package/edit/networking.k8s.io.ingress/Rules.vue +2 -2
- package/edit/networking.k8s.io.ingress/index.vue +4 -4
- package/edit/networking.k8s.io.networkpolicy/PolicyRuleTarget.vue +3 -3
- package/edit/networking.k8s.io.networkpolicy/index.vue +1 -1
- package/edit/persistentvolume/index.vue +4 -4
- package/edit/persistentvolumeclaim.vue +3 -3
- package/edit/provisioning.cattle.io.cluster/RegistryMirrors.vue +1 -1
- package/edit/provisioning.cattle.io.cluster/SelectCredential.vue +2 -2
- package/edit/provisioning.cattle.io.cluster/import.vue +2 -2
- package/edit/provisioning.cattle.io.cluster/index.vue +7 -7
- package/edit/provisioning.cattle.io.cluster/rke2.vue +28 -29
- package/edit/resources.cattle.io.backup.vue +2 -2
- package/edit/resources.cattle.io.restore.vue +3 -3
- package/edit/secret/generic.vue +1 -1
- package/edit/secret/index.vue +3 -3
- package/edit/service.vue +3 -21
- package/edit/serviceaccount.vue +2 -2
- package/edit/storage.k8s.io.storageclass/index.vue +4 -4
- package/edit/storage.k8s.io.storageclass/provisioners/driver.harvesterhci.io.vue +1 -1
- package/edit/token.vue +5 -5
- package/edit/workload/index.vue +1 -1
- package/edit/workload/mixins/workload.js +8 -8
- package/edit/workload/storage/ContainerMountPaths.vue +9 -9
- package/edit/workload/storage/Mount.vue +2 -2
- package/edit/workload/storage/csi/index.vue +1 -1
- package/edit/workload/storage/ephemeralVolume/index.vue +1 -1
- package/edit/workload/storage/index.vue +6 -6
- package/edit/workload/storage/persistentVolumeClaim/persistentvolumeclaim.vue +2 -2
- package/initialize/client.js +8 -8
- package/initialize/index.js +1 -4
- package/layouts/default.vue +38 -11
- package/list/catalog.cattle.io.clusterrepo.vue +9 -1
- package/list/cis.cattle.io.clusterscan.vue +1 -1
- package/list/fleet.cattle.io.cluster.vue +2 -2
- package/list/group.principal.vue +1 -1
- package/list/helm.cattle.io.projecthelmchart.vue +2 -2
- package/list/management.cattle.io.cluster.vue +1 -1
- package/list/management.cattle.io.feature.vue +1 -1
- package/list/management.cattle.io.user.vue +2 -2
- package/list/node.vue +5 -5
- package/list/provisioning.cattle.io.cluster.vue +4 -5
- package/machine-config/amazonec2.vue +2 -2
- package/machine-config/digitalocean.vue +4 -4
- package/machine-config/linode.vue +4 -4
- package/machine-config/vmwarevsphere.vue +12 -12
- package/middleware/authenticated.js +7 -6
- package/mixins/brand.js +1 -1
- package/mixins/chart.js +6 -6
- package/mixins/fetch.client.js +2 -2
- package/mixins/form-validation.js +7 -7
- package/mixins/resource-fetch-namespaced.js +1 -1
- package/mixins/resource-fetch.js +2 -2
- package/models/apps.statefulset.js +2 -2
- package/models/batch.cronjob.js +1 -1
- package/models/catalog.cattle.io.app.js +4 -4
- package/models/cis.cattle.io.clusterscan.js +1 -1
- package/models/cis.cattle.io.clusterscanbenchmark.js +1 -1
- package/models/cis.cattle.io.clusterscanreport.js +1 -1
- package/models/cloudcredential.js +1 -1
- package/models/cluster/node.js +5 -5
- package/models/cluster.x-k8s.io.machinedeployment.js +2 -2
- package/models/fleet.cattle.io.gitrepo.js +3 -3
- package/models/group.principal.js +4 -4
- package/models/helm.cattle.io.projecthelmchart.js +2 -2
- package/models/logging.banzaicloud.io.clusterflow.js +2 -2
- package/models/logging.banzaicloud.io.flow.js +5 -5
- package/models/logging.banzaicloud.io.output.js +2 -2
- package/models/management.cattle.io.cluster.js +10 -14
- package/models/management.cattle.io.globalrole.js +4 -4
- package/models/management.cattle.io.node.js +2 -2
- package/models/management.cattle.io.nodepool.js +3 -3
- package/models/management.cattle.io.nodetemplate.js +4 -4
- package/models/management.cattle.io.project.js +2 -2
- package/models/management.cattle.io.roletemplate.js +1 -1
- package/models/management.cattle.io.setting.js +1 -1
- package/models/management.cattle.io.user.js +5 -5
- package/models/monitoring.coreos.com.receiver.js +9 -9
- package/models/namespace.js +1 -1
- package/models/networking.k8s.io.ingress.js +5 -5
- package/models/persistentvolume.js +3 -3
- package/models/pod.js +3 -3
- package/models/provisioning.cattle.io.cluster.js +39 -27
- package/models/rbac.authorization.k8s.io.clusterrole.js +2 -2
- package/models/rbac.authorization.k8s.io.role.js +3 -3
- package/models/secret.js +1 -1
- package/models/service.js +2 -2
- package/models/storage.k8s.io.storageclass.js +2 -2
- package/models/token.js +1 -1
- package/models/workload.js +6 -6
- package/models/workload.service.js +5 -21
- package/package.json +2 -1
- package/pages/about.vue +9 -9
- package/pages/account/index.vue +2 -2
- package/pages/auth/login.vue +15 -12
- package/pages/auth/verify.vue +6 -0
- package/pages/c/_cluster/apps/charts/index.vue +4 -4
- package/pages/c/_cluster/apps/charts/install.vue +28 -20
- package/pages/c/_cluster/auth/roles/index.vue +9 -9
- package/pages/c/_cluster/explorer/index.vue +41 -16
- package/pages/c/_cluster/explorer/tools/index.vue +8 -8
- package/pages/c/_cluster/fleet/GitRepoGraphConfig.js +1 -1
- package/pages/c/_cluster/fleet/index.vue +11 -11
- package/pages/c/_cluster/monitoring/index.vue +1 -1
- package/pages/c/_cluster/settings/links.vue +3 -3
- package/pages/c/_cluster/settings/performance.vue +1 -1
- package/pages/c/_cluster/uiplugins/CatalogList/CatalogLoadDialog.vue +6 -6
- package/pages/c/_cluster/uiplugins/CatalogList/index.vue +3 -3
- package/pages/c/_cluster/uiplugins/InstallDialog.vue +3 -3
- package/pages/c/_cluster/uiplugins/PluginInfoPanel.vue +1 -1
- package/pages/c/_cluster/uiplugins/RemoveUIPlugins.vue +3 -3
- package/pages/c/_cluster/uiplugins/SetupUIPlugins.vue +6 -6
- package/pages/c/_cluster/uiplugins/UninstallDialog.vue +4 -4
- package/pages/c/_cluster/uiplugins/index.vue +22 -19
- package/pages/diagnostic.vue +6 -6
- package/pages/home.vue +3 -3
- package/pages/prefs.vue +2 -2
- package/pages/rio/mesh.vue +3 -3
- package/pages/support/index.vue +10 -1
- package/pkg/auto-import.js +1 -1
- package/pkg/tsconfig.json +1 -0
- package/pkg/vue.config.js +1 -1
- package/plugins/axios.js +1 -1
- package/plugins/clean-html-directive.js +1 -1
- package/plugins/dashboard-store/__tests__/mutations.spec.js +4 -4
- package/plugins/dashboard-store/actions.js +4 -4
- package/plugins/dashboard-store/getters.js +1 -1
- package/plugins/dashboard-store/index.js +1 -1
- package/plugins/dashboard-store/mutations.js +2 -2
- package/plugins/dashboard-store/resource-class.js +8 -8
- package/plugins/i18n.js +1 -1
- package/plugins/plugin.js +5 -1
- package/plugins/steve/actions.js +3 -3
- package/plugins/steve/getters.js +3 -3
- package/plugins/steve/hybrid-class.js +1 -1
- package/plugins/steve/mutations.js +1 -1
- package/plugins/steve/performanceTesting.js +1 -1
- package/plugins/steve/resourceWatcher.js +1 -1
- package/plugins/steve/subscribe.js +6 -6
- package/plugins/steve/worker/web-worker.basic.js +1 -1
- package/promptRemove/management.cattle.io.project.vue +3 -3
- package/promptRemove/mixin/roleDeletionCheck.js +4 -4
- package/promptRemove/pod.vue +1 -1
- package/rancher-components/StringList/StringList.vue +34 -50
- package/rancher-components/components/Form/Checkbox/Checkbox.test.ts +2 -2
- package/rancher-components/components/Form/Checkbox/Checkbox.vue +1 -1
- package/rancher-components/components/Form/Radio/RadioButton.test.ts +1 -1
- package/rancher-components/components/Form/Radio/RadioButton.vue +2 -2
- package/rancher-components/components/Form/Radio/RadioGroup.vue +2 -2
- package/rancher-components/components/Form/TextArea/TextAreaAutoGrow.vue +1 -0
- package/rancher-components/components/Form/ToggleSwitch/ToggleSwitch.test.ts +1 -1
- package/rancher-components/components/Form/ToggleSwitch/ToggleSwitch.vue +7 -7
- package/rancher-components/components/StringList/StringList.test.ts +10 -9
- package/rancher-components/components/StringList/StringList.vue +5 -5
- package/scripts/extension/helm/charts/ui-plugin-server/Chart.yaml +1 -1
- package/store/action-menu.js +4 -4
- package/store/auth.js +40 -7
- package/store/aws.js +1 -1
- package/store/catalog.js +12 -11
- package/store/digitalocean.js +4 -4
- package/store/features.js +1 -0
- package/store/github.js +70 -213
- package/store/gitlab.js +159 -0
- package/store/growl.js +1 -1
- package/store/i18n.js +7 -7
- package/store/index.js +63 -22
- package/store/linode.js +1 -1
- package/store/plugins.js +5 -5
- package/store/pnap.js +1 -1
- package/store/prefs.js +6 -6
- package/store/resource-fetch.js +3 -3
- package/store/type-map.js +61 -42
- package/store/uiplugins.ts +2 -1
- package/store/wm.js +5 -4
- package/tsconfig.default.json +10 -0
- package/tsconfig.json +2 -9
- package/types/shell/index.d.ts +21 -13
- package/utils/__tests__/version.test.ts +28 -0
- package/utils/alertmanagerconfig.js +4 -4
- package/utils/array.ts +4 -4
- package/utils/async.ts +1 -1
- package/utils/auth.js +3 -3
- package/utils/axios.js +5 -5
- package/utils/cluster.js +4 -3
- package/utils/color.js +10 -0
- package/utils/create-yaml.js +4 -4
- package/utils/crypto/browserHashUtils.js +1 -1
- package/utils/crypto/browserMd5.js +1 -1
- package/utils/crypto/browserSha1.js +1 -1
- package/utils/crypto/browserSha256.js +1 -1
- package/utils/crypto/index.js +3 -3
- package/utils/favicon.js +2 -3
- package/utils/gatekeeper/util.js +3 -3
- package/utils/gc/gc.ts +2 -2
- package/utils/git.ts +92 -0
- package/utils/grafana.js +4 -4
- package/utils/monitoring.js +2 -2
- package/utils/nuxt.js +2 -2
- package/utils/object.js +5 -5
- package/utils/pod-security-admission.ts +1 -1
- package/utils/projectAndNamespaceFiltering.utils.ts +1 -1
- package/utils/select.js +2 -2
- package/utils/selector.js +2 -2
- package/utils/settings.ts +17 -2
- package/utils/socket.js +30 -6
- package/utils/sort.js +1 -1
- package/utils/string.js +1 -1
- package/utils/url.ts +1 -1
- package/utils/validators/formRules/index.ts +3 -3
- package/utils/validators/role-template.js +4 -4
- package/utils/version.js +14 -1
- package/vue.config.js +19 -13
- package/components/.DS_Store +0 -0
- package/components/__tests__/.DS_Store +0 -0
- package/components/form/GithubPicker.vue +0 -390
- package/creators/pkg/package-lock.json +0 -37
- package/yarn-error.log +0 -196
|
@@ -99,7 +99,7 @@ export default {
|
|
|
99
99
|
const actionEnabledForSomeSelected = this.selectedRows.some((node) => {
|
|
100
100
|
const availableActions = node.availableActions || [];
|
|
101
101
|
|
|
102
|
-
return availableActions.some(action => action.action === bulkAction.action && action.enabled);
|
|
102
|
+
return availableActions.some((action) => action.action === bulkAction.action && action.enabled);
|
|
103
103
|
});
|
|
104
104
|
|
|
105
105
|
bulkAction.enabled = this.selectedRows.length > 0 && actionEnabledForSomeSelected;
|
|
@@ -218,7 +218,7 @@ export default {
|
|
|
218
218
|
return;
|
|
219
219
|
}
|
|
220
220
|
|
|
221
|
-
const node = this.pagedRows.find( x => get(x, this.keyField) === nodeId );
|
|
221
|
+
const node = this.pagedRows.find( (x) => get(x, this.keyField) === nodeId );
|
|
222
222
|
|
|
223
223
|
return node;
|
|
224
224
|
},
|
|
@@ -401,7 +401,7 @@ export default {
|
|
|
401
401
|
}
|
|
402
402
|
|
|
403
403
|
// check if there is already duplicate content selected (selectedRows) on the list to toggle...
|
|
404
|
-
toToggle = toToggle.filter(item => !this.selectedRows.includes(item));
|
|
404
|
+
toToggle = toToggle.filter((item) => !this.selectedRows.includes(item));
|
|
405
405
|
|
|
406
406
|
return toToggle;
|
|
407
407
|
},
|
|
@@ -440,7 +440,7 @@ export default {
|
|
|
440
440
|
|
|
441
441
|
update(toAdd, toRemove) {
|
|
442
442
|
toRemove.forEach((row) => {
|
|
443
|
-
const index = this.selectedRows.findIndex(r => r === row);
|
|
443
|
+
const index = this.selectedRows.findIndex((r) => r === row);
|
|
444
444
|
|
|
445
445
|
if (index !== -1) {
|
|
446
446
|
this.selectedRows.splice(index, 1);
|
|
@@ -516,7 +516,7 @@ export default {
|
|
|
516
516
|
|
|
517
517
|
// Go through the table selection and filter out those actions that can't run the chosen action
|
|
518
518
|
const executableSelection = this.selectedRows.filter((row) => {
|
|
519
|
-
const matchingResourceAction = row.availableActions.find(a => a.action === action.action);
|
|
519
|
+
const matchingResourceAction = row.availableActions.find((a) => a.action === action.action);
|
|
520
520
|
|
|
521
521
|
return matchingResourceAction?.enabled;
|
|
522
522
|
});
|
|
@@ -7,7 +7,7 @@ export default {
|
|
|
7
7
|
let fromGroup = ( this.groupBy ? this.groupSort || this.groupBy : null) || [];
|
|
8
8
|
let fromColumn = [];
|
|
9
9
|
|
|
10
|
-
const column = (this.columns || this.headers).find(x => x && x.name && x.name.toLowerCase() === this.sortBy.toLowerCase());
|
|
10
|
+
const column = (this.columns || this.headers).find((x) => x && x.name && x.name.toLowerCase() === this.sortBy.toLowerCase());
|
|
11
11
|
|
|
12
12
|
if ( this.sortBy && column && column.sort ) {
|
|
13
13
|
fromColumn = column.sort;
|
|
@@ -58,8 +58,8 @@ export default {
|
|
|
58
58
|
|
|
59
59
|
// Try to find a reasonable default sort
|
|
60
60
|
if ( !this._defaultSortBy ) {
|
|
61
|
-
const markedColumn = this.headers.find(x => !!x.defaultSort);
|
|
62
|
-
const nameColumn = this.headers.find( x => x.name === 'name');
|
|
61
|
+
const markedColumn = this.headers.find((x) => !!x.defaultSort);
|
|
62
|
+
const nameColumn = this.headers.find( (x) => x.name === 'name');
|
|
63
63
|
|
|
64
64
|
if ( markedColumn ) {
|
|
65
65
|
this._defaultSortBy = markedColumn.name;
|
|
@@ -68,7 +68,7 @@ export default {
|
|
|
68
68
|
this._defaultSortBy = nameColumn.name;
|
|
69
69
|
} else {
|
|
70
70
|
// The first column that isn't state
|
|
71
|
-
const first = this.headers.filter( x => x.name !== 'state' )[0];
|
|
71
|
+
const first = this.headers.filter( (x) => x.name !== 'state' )[0];
|
|
72
72
|
|
|
73
73
|
if ( first ) {
|
|
74
74
|
this._defaultSortBy = first.name;
|
|
@@ -80,7 +80,7 @@ export default {
|
|
|
80
80
|
}
|
|
81
81
|
|
|
82
82
|
// If the sort column doesn't exist or isn't specified, use default
|
|
83
|
-
if ( !sortBy || !this.headers.find(x => x.name === sortBy ) ) {
|
|
83
|
+
if ( !sortBy || !this.headers.find((x) => x.name === sortBy ) ) {
|
|
84
84
|
sortBy = this._defaultSortBy;
|
|
85
85
|
}
|
|
86
86
|
|
|
@@ -94,17 +94,17 @@ export default {
|
|
|
94
94
|
defaultTab,
|
|
95
95
|
useHash
|
|
96
96
|
} = this;
|
|
97
|
-
const activeTab = tabs.find(t => t.active);
|
|
97
|
+
const activeTab = tabs.find((t) => t.active);
|
|
98
98
|
|
|
99
99
|
const hash = useHash ? this.$route.hash : undefined;
|
|
100
100
|
const windowHash = useHash ? hash.slice(1) : undefined;
|
|
101
|
-
const windowHashTabMatch = tabs.find(t => t.name === windowHash && !t.active);
|
|
101
|
+
const windowHashTabMatch = tabs.find((t) => t.name === windowHash && !t.active);
|
|
102
102
|
const firstTab = head(tabs) || null;
|
|
103
103
|
|
|
104
104
|
if (isEmpty(activeTab)) {
|
|
105
105
|
if (useHash && !isEmpty(windowHashTabMatch)) {
|
|
106
106
|
this.select(windowHashTabMatch.name);
|
|
107
|
-
} else if (!isEmpty(defaultTab) && !isEmpty(tabs.find(t => t.name === defaultTab))) {
|
|
107
|
+
} else if (!isEmpty(defaultTab) && !isEmpty(tabs.find((t) => t.name === defaultTab))) {
|
|
108
108
|
this.select(defaultTab);
|
|
109
109
|
} else if (firstTab?.name) {
|
|
110
110
|
this.select(firstTab.name);
|
|
@@ -144,7 +144,7 @@ export default {
|
|
|
144
144
|
},
|
|
145
145
|
|
|
146
146
|
find(name) {
|
|
147
|
-
return this.sortedTabs.find(x => x.name === name );
|
|
147
|
+
return this.sortedTabs.find((x) => x.name === name );
|
|
148
148
|
},
|
|
149
149
|
|
|
150
150
|
select(name/* , event */) {
|
|
@@ -184,7 +184,7 @@ export default {
|
|
|
184
184
|
|
|
185
185
|
selectNext(direction) {
|
|
186
186
|
const { sortedTabs } = this;
|
|
187
|
-
const currentIdx = sortedTabs.findIndex(x => x.active);
|
|
187
|
+
const currentIdx = sortedTabs.findIndex((x) => x.active);
|
|
188
188
|
const nextIdx = getCyclicalIdx(currentIdx, direction, sortedTabs.length);
|
|
189
189
|
const nextName = sortedTabs[nextIdx].name;
|
|
190
190
|
|
|
@@ -208,13 +208,13 @@ export default {
|
|
|
208
208
|
},
|
|
209
209
|
|
|
210
210
|
tabAddClicked() {
|
|
211
|
-
const activeTabIndex = findIndex(this.tabs, tab => tab.active);
|
|
211
|
+
const activeTabIndex = findIndex(this.tabs, (tab) => tab.active);
|
|
212
212
|
|
|
213
213
|
this.$emit('addTab', activeTabIndex);
|
|
214
214
|
},
|
|
215
215
|
|
|
216
216
|
tabRemoveClicked() {
|
|
217
|
-
const activeTabIndex = findIndex(this.tabs, tab => tab.active);
|
|
217
|
+
const activeTabIndex = findIndex(this.tabs, (tab) => tab.active);
|
|
218
218
|
|
|
219
219
|
this.$emit('removeTab', activeTabIndex);
|
|
220
220
|
},
|
package/components/Wizard.vue
CHANGED
|
@@ -117,11 +117,11 @@ export default {
|
|
|
117
117
|
|
|
118
118
|
computed: {
|
|
119
119
|
errorStrings() {
|
|
120
|
-
return ( this.errors || [] ).map(x => stringify(x));
|
|
120
|
+
return ( this.errors || [] ).map((x) => stringify(x));
|
|
121
121
|
},
|
|
122
122
|
|
|
123
123
|
activeStepIndex() {
|
|
124
|
-
return this.visibleSteps.findIndex(s => s.name === this.activeStep.name);
|
|
124
|
+
return this.visibleSteps.findIndex((s) => s.name === this.activeStep.name);
|
|
125
125
|
},
|
|
126
126
|
|
|
127
127
|
showPrevious() {
|
|
@@ -153,7 +153,7 @@ export default {
|
|
|
153
153
|
},
|
|
154
154
|
|
|
155
155
|
readySteps() {
|
|
156
|
-
return this.visibleSteps.filter(step => step.ready);
|
|
156
|
+
return this.visibleSteps.filter((step) => step.ready);
|
|
157
157
|
},
|
|
158
158
|
|
|
159
159
|
showSteps() {
|
|
@@ -161,11 +161,11 @@ export default {
|
|
|
161
161
|
},
|
|
162
162
|
|
|
163
163
|
stepsLoaded() {
|
|
164
|
-
return !this.steps.some(step => step.loading === true);
|
|
164
|
+
return !this.steps.some((step) => step.loading === true);
|
|
165
165
|
},
|
|
166
166
|
|
|
167
167
|
visibleSteps() {
|
|
168
|
-
return this.steps.filter(step => !step.hidden);
|
|
168
|
+
return this.steps.filter((step) => !step.hidden);
|
|
169
169
|
},
|
|
170
170
|
|
|
171
171
|
nextButtonStyle() {
|
|
@@ -234,7 +234,7 @@ export default {
|
|
|
234
234
|
return false;
|
|
235
235
|
}
|
|
236
236
|
|
|
237
|
-
const idx = this.visibleSteps.findIndex(s => s.name === step.name);
|
|
237
|
+
const idx = this.visibleSteps.findIndex((s) => s.name === step.name);
|
|
238
238
|
|
|
239
239
|
if (idx === 0 && !this.editFirstStep) {
|
|
240
240
|
return false;
|
|
@@ -478,6 +478,7 @@ $spacer: 10px;
|
|
|
478
478
|
display: flex;
|
|
479
479
|
align-content: space-between;
|
|
480
480
|
align-items: center;
|
|
481
|
+
margin-bottom: 2*$spacer;
|
|
481
482
|
|
|
482
483
|
border-bottom: var(--header-border-size) solid var(--header-border);
|
|
483
484
|
|
|
@@ -525,20 +526,12 @@ $spacer: 10px;
|
|
|
525
526
|
align-items: center;
|
|
526
527
|
width: 40px;
|
|
527
528
|
overflow: visible;
|
|
528
|
-
padding-top:
|
|
529
|
+
padding-top: 7px;
|
|
529
530
|
|
|
530
|
-
.cru__content & {
|
|
531
|
-
padding-top: 0;
|
|
532
|
-
|
|
533
|
-
}
|
|
534
531
|
& > span {
|
|
535
|
-
padding-bottom:
|
|
532
|
+
padding-bottom: 3px;
|
|
536
533
|
margin-bottom: 5px;
|
|
537
534
|
white-space: nowrap;
|
|
538
|
-
|
|
539
|
-
.cru__content & {
|
|
540
|
-
padding-bottom: 3px;
|
|
541
|
-
}
|
|
542
535
|
}
|
|
543
536
|
}
|
|
544
537
|
|
|
@@ -565,7 +558,7 @@ $spacer: 10px;
|
|
|
565
558
|
flex-basis: 100%;
|
|
566
559
|
border-top: 1px solid var(--border);
|
|
567
560
|
position: relative;
|
|
568
|
-
top:
|
|
561
|
+
top: 17px;
|
|
569
562
|
|
|
570
563
|
.cru__content & {
|
|
571
564
|
top: 13px;
|
|
@@ -595,6 +588,7 @@ $spacer: 10px;
|
|
|
595
588
|
display: flex;
|
|
596
589
|
align-items: center;
|
|
597
590
|
justify-content: space-evenly;
|
|
591
|
+
position: relative;
|
|
598
592
|
|
|
599
593
|
& > .subtitle {
|
|
600
594
|
margin-right: 20px;
|
|
@@ -677,10 +671,4 @@ $spacer: 10px;
|
|
|
677
671
|
}
|
|
678
672
|
}
|
|
679
673
|
|
|
680
|
-
.wizard {
|
|
681
|
-
.header {
|
|
682
|
-
margin-bottom: 2*$spacer;
|
|
683
|
-
}
|
|
684
|
-
}
|
|
685
|
-
|
|
686
674
|
</style>
|
|
@@ -2,6 +2,7 @@ import { mount } from '@vue/test-utils';
|
|
|
2
2
|
import CruResource from '@shell/components/CruResource.vue';
|
|
3
3
|
import { _EDIT, _YAML } from '@shell/config/query-params';
|
|
4
4
|
import { cleanHtmlDirective } from '@shell/plugins/clean-html-directive';
|
|
5
|
+
import TextAreaAutoGrow from '@components/Form/TextArea/TextAreaAutoGrow.vue';
|
|
5
6
|
|
|
6
7
|
describe('component: CruResource', () => {
|
|
7
8
|
it('should hide Cancel button', () => {
|
|
@@ -66,4 +67,77 @@ describe('component: CruResource', () => {
|
|
|
66
67
|
expect(node.text()).toContain(errors[0]);
|
|
67
68
|
expect(node.text()).toContain(errors[1]);
|
|
68
69
|
});
|
|
70
|
+
|
|
71
|
+
it('should prevent default events on keypress Enter', async() => {
|
|
72
|
+
const event = { preventDefault: jest.fn() };
|
|
73
|
+
const wrapper = mount(CruResource, {
|
|
74
|
+
propsData: {
|
|
75
|
+
canYaml: true,
|
|
76
|
+
mode: _EDIT,
|
|
77
|
+
resource: {},
|
|
78
|
+
preventEnterSubmit: true
|
|
79
|
+
},
|
|
80
|
+
slots: { default: TextAreaAutoGrow },
|
|
81
|
+
stubs: { TextAreaAutoGrow },
|
|
82
|
+
mocks: {
|
|
83
|
+
$store: {
|
|
84
|
+
getters: {
|
|
85
|
+
currentStore: () => 'current_store',
|
|
86
|
+
'current_store/schemaFor': jest.fn(),
|
|
87
|
+
'current_store/all': jest.fn(),
|
|
88
|
+
'i18n/t': jest.fn(),
|
|
89
|
+
'i18n/exists': jest.fn(),
|
|
90
|
+
}
|
|
91
|
+
},
|
|
92
|
+
$route: { query: { AS: _YAML } },
|
|
93
|
+
$router: { applyQuery: jest.fn() },
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
|
|
97
|
+
const textAreaField = wrapper.find('[data-testid="text-area-auto-grow"]');
|
|
98
|
+
|
|
99
|
+
await textAreaField.trigger('focus');
|
|
100
|
+
await textAreaField.trigger('keydown.enter', event);
|
|
101
|
+
|
|
102
|
+
expect(event.preventDefault).toHaveBeenCalledWith();
|
|
103
|
+
});
|
|
104
|
+
|
|
105
|
+
it('should not prevent default events on keypress Enter', async() => {
|
|
106
|
+
const event = { preventDefault: jest.fn() };
|
|
107
|
+
const wrapper = mount(CruResource, {
|
|
108
|
+
directives: { cleanHtmlDirective },
|
|
109
|
+
propsData: {
|
|
110
|
+
canYaml: false,
|
|
111
|
+
mode: _EDIT,
|
|
112
|
+
resource: {},
|
|
113
|
+
preventEnterSubmit: false
|
|
114
|
+
},
|
|
115
|
+
components: {
|
|
116
|
+
ResourceYaml: { template: '<div></div> ' },
|
|
117
|
+
ResourceCancelModal: { template: '<div></div> ' },
|
|
118
|
+
},
|
|
119
|
+
slots: { default: TextAreaAutoGrow },
|
|
120
|
+
stubs: { TextAreaAutoGrow },
|
|
121
|
+
mocks: {
|
|
122
|
+
$store: {
|
|
123
|
+
getters: {
|
|
124
|
+
currentStore: () => 'current_store',
|
|
125
|
+
'current_store/schemaFor': jest.fn(),
|
|
126
|
+
'current_store/all': jest.fn(),
|
|
127
|
+
'i18n/t': jest.fn(),
|
|
128
|
+
'i18n/exists': jest.fn(),
|
|
129
|
+
}
|
|
130
|
+
},
|
|
131
|
+
$route: { query: { AS: _YAML } },
|
|
132
|
+
$router: { applyQuery: jest.fn() },
|
|
133
|
+
}
|
|
134
|
+
});
|
|
135
|
+
|
|
136
|
+
const textAreaField = wrapper.find('[data-testid="text-area-auto-grow"]');
|
|
137
|
+
|
|
138
|
+
await textAreaField.trigger('focus');
|
|
139
|
+
await textAreaField.trigger('keydown.enter', event);
|
|
140
|
+
|
|
141
|
+
expect(event.preventDefault).not.toHaveBeenCalled();
|
|
142
|
+
});
|
|
69
143
|
});
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { mount } from '@vue/test-utils';
|
|
2
1
|
import SimpleBox from '@shell/components/SimpleBox.vue';
|
|
2
|
+
import { mount } from '@vue/test-utils';
|
|
3
3
|
|
|
4
4
|
describe('component: SimpleBox.vue', () => {
|
|
5
5
|
const wrapper = mount(SimpleBox, { propsData: { title: 'Simple box title' } });
|
|
@@ -319,7 +319,7 @@ export default {
|
|
|
319
319
|
return this.createRules(this.value);
|
|
320
320
|
},
|
|
321
321
|
ruleHeaders() {
|
|
322
|
-
const verbHeaders = VERBS.map(verb => ({
|
|
322
|
+
const verbHeaders = VERBS.map((verb) => ({
|
|
323
323
|
name: verb,
|
|
324
324
|
key: ucFirst(verb),
|
|
325
325
|
value: this.verbKey(verb),
|
|
@@ -485,7 +485,7 @@ export default {
|
|
|
485
485
|
const key = this.verbKey(verb);
|
|
486
486
|
|
|
487
487
|
tableRule[key] = rule.verbs[0] === '*' || rule.verbs.includes(verb);
|
|
488
|
-
tableRule.hasCustomVerbs = rule.verbs.some(verb => !VERBS.includes(verb));
|
|
488
|
+
tableRule.hasCustomVerbs = rule.verbs.some((verb) => !VERBS.includes(verb));
|
|
489
489
|
});
|
|
490
490
|
|
|
491
491
|
return tableRule;
|
|
@@ -497,7 +497,7 @@ export default {
|
|
|
497
497
|
}
|
|
498
498
|
|
|
499
499
|
parent.roleTemplateNames
|
|
500
|
-
.map(rtn => this.$store.getters[`management/byId`](MANAGEMENT.ROLE_TEMPLATE, rtn))
|
|
500
|
+
.map((rtn) => this.$store.getters[`management/byId`](MANAGEMENT.ROLE_TEMPLATE, rtn))
|
|
501
501
|
.forEach((rt) => {
|
|
502
502
|
// Add Self
|
|
503
503
|
res.push({
|
|
@@ -659,6 +659,7 @@ export default {
|
|
|
659
659
|
:options="verbOptions"
|
|
660
660
|
:multiple="true"
|
|
661
661
|
:mode="mode"
|
|
662
|
+
:data-testid="`grant-resources-verbs${props.i}`"
|
|
662
663
|
@input="updateSelectValue(props.row.value, 'verbs', $event)"
|
|
663
664
|
/>
|
|
664
665
|
</div>
|
|
@@ -670,6 +671,7 @@ export default {
|
|
|
670
671
|
:searchable="true"
|
|
671
672
|
:taggable="true"
|
|
672
673
|
:mode="mode"
|
|
674
|
+
:data-testid="`grant-resources-resources${props.i}`"
|
|
673
675
|
@input="setRule('resources', props.row.value, $event)"
|
|
674
676
|
@createdListItem="setRule('resources', props.row.value, $event)"
|
|
675
677
|
/>
|
|
@@ -679,6 +681,7 @@ export default {
|
|
|
679
681
|
:value="getRule('apiGroups', props.row.value)"
|
|
680
682
|
:disabled="isBuiltin"
|
|
681
683
|
:mode="mode"
|
|
684
|
+
:data-testid="`grant-resources-api-groups${props.i}`"
|
|
682
685
|
@input="setRule('apiGroups', props.row.value, $event.target.value)"
|
|
683
686
|
>
|
|
684
687
|
</div>
|
|
@@ -690,6 +693,7 @@ export default {
|
|
|
690
693
|
:value="getRule('nonResourceURLs', props.row.value)"
|
|
691
694
|
:disabled="isBuiltin"
|
|
692
695
|
:mode="mode"
|
|
696
|
+
:data-testid="`grant-resources-non-resource-urls${props.i}`"
|
|
693
697
|
@input="setRule('nonResourceURLs', props.row.value, $event.target.value)"
|
|
694
698
|
>
|
|
695
699
|
</div>
|
|
@@ -76,7 +76,7 @@ export default {
|
|
|
76
76
|
return true;
|
|
77
77
|
})
|
|
78
78
|
.sort((a, b) => a.name.localeCompare(b.name))
|
|
79
|
-
.map(x => x.id);
|
|
79
|
+
.map((x) => x.id);
|
|
80
80
|
|
|
81
81
|
return out;
|
|
82
82
|
},
|
|
@@ -100,7 +100,7 @@ export default {
|
|
|
100
100
|
return;
|
|
101
101
|
}
|
|
102
102
|
if (this.principals) {
|
|
103
|
-
const selected = this.principals.find(p => p.id === this.newValue);
|
|
103
|
+
const selected = this.principals.find((p) => p.id === this.newValue);
|
|
104
104
|
|
|
105
105
|
this.tooltipContent = selected?.name;
|
|
106
106
|
} else {
|
|
@@ -159,7 +159,7 @@ export default {
|
|
|
159
159
|
|
|
160
160
|
if ( this.searchStr === str ) {
|
|
161
161
|
// If not, they've already typed something else
|
|
162
|
-
this.options = res.map(x => x.id);
|
|
162
|
+
this.options = res.map((x) => x.id);
|
|
163
163
|
}
|
|
164
164
|
} catch (e) {
|
|
165
165
|
this.options = [];
|
|
@@ -32,7 +32,7 @@ export default {
|
|
|
32
32
|
|
|
33
33
|
for ( const c of clusters ) {
|
|
34
34
|
let state = r.state;
|
|
35
|
-
const perEntry = r.perClusterState?.find(x => x.clusterId === c.id );
|
|
35
|
+
const perEntry = r.perClusterState?.find((x) => x.clusterId === c.id );
|
|
36
36
|
const tooMany = r.perClusterState?.length >= 10 || false;
|
|
37
37
|
|
|
38
38
|
if ( perEntry ) {
|
|
@@ -50,8 +50,8 @@ export default {
|
|
|
50
50
|
computed: {
|
|
51
51
|
meta() {
|
|
52
52
|
return {
|
|
53
|
-
total: this.values.map(x => x.value).reduce((a, b) => a + b),
|
|
54
|
-
readyCount: this.values.filter(x => x.label === 'Success' || x.label === 'Ready').map(x => x.value).reduce((a, b) => a + b)
|
|
53
|
+
total: this.values.map((x) => x.value).reduce((a, b) => a + b),
|
|
54
|
+
readyCount: this.values.filter((x) => x.label === 'Success' || x.label === 'Ready').map((x) => x.value).reduce((a, b) => a + b)
|
|
55
55
|
};
|
|
56
56
|
},
|
|
57
57
|
|
|
@@ -83,7 +83,7 @@ export default {
|
|
|
83
83
|
if ( !this.max ) {
|
|
84
84
|
max = 100;
|
|
85
85
|
if ( out.length ) {
|
|
86
|
-
max = out.map(x => x.value).reduce((a, b) => a + b);
|
|
86
|
+
max = out.map((x) => x.value).reduce((a, b) => a + b);
|
|
87
87
|
}
|
|
88
88
|
}
|
|
89
89
|
|
|
@@ -112,7 +112,7 @@ export default {
|
|
|
112
112
|
return obj;
|
|
113
113
|
});
|
|
114
114
|
|
|
115
|
-
return [...out].filter(obj => obj.percent);
|
|
115
|
+
return [...out].filter((obj) => obj.percent);
|
|
116
116
|
},
|
|
117
117
|
},
|
|
118
118
|
|
|
@@ -80,7 +80,7 @@ export default {
|
|
|
80
80
|
},
|
|
81
81
|
|
|
82
82
|
bundleCounts() {
|
|
83
|
-
const resources = this.bundles.filter(item => item.metadata.name.startsWith(`${ this.repoName }-`));
|
|
83
|
+
const resources = this.bundles.filter((item) => item.metadata.name.startsWith(`${ this.repoName }-`));
|
|
84
84
|
|
|
85
85
|
if (!resources.length) {
|
|
86
86
|
return [];
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// This is to mitigate an issue where the SVG icons being imported from the project weren't being rendered on Firefox
|
|
2
2
|
// To know more about this technique, check this doc: https://developer.mozilla.org/en-US/docs/Web/SVG/Element/defs
|
|
3
|
-
export const getChartIcon = type => `<defs>
|
|
3
|
+
export const getChartIcon = (type) => `<defs>
|
|
4
4
|
<!-- GIT REPO ICON -->
|
|
5
5
|
<svg id="git" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 96 96" style="enable-background:new 0 0 96 96" xml:space="preserve"><path class="st0" d="M92.138 43.888 52.018 3.77a5.918 5.918 0 0 0-8.369 0l-8.33 8.332L45.887 22.67a7.025 7.025 0 0 1 7.23 1.684 7.031 7.031 0 0 1 1.67 7.275l10.185 10.185a7.03 7.03 0 0 1 7.275 1.67 7.04 7.04 0 0 1 0 9.958 7.042 7.042 0 0 1-11.492-7.658l-9.5-9.499v24.997a7.09 7.09 0 0 1 1.861 1.331 7.042 7.042 0 1 1-7.65-1.537V35.849a7.04 7.04 0 0 1-3.822-9.234l-10.418-10.42-27.51 27.508a5.921 5.921 0 0 0 0 8.371l40.121 40.118a5.919 5.919 0 0 0 8.37 0l39.93-39.932a5.92 5.92 0 0 0 0-8.37z"/></svg>
|
|
6
6
|
<!-- GENERIC BUNDLE ICON -->
|
|
@@ -57,7 +57,7 @@ export default {
|
|
|
57
57
|
let hasStatusChange = false;
|
|
58
58
|
|
|
59
59
|
flattenedData.forEach((item) => {
|
|
60
|
-
const index = this.allNodesData.findIndex(nodeData => item.matchingId === nodeData.data.matchingId);
|
|
60
|
+
const index = this.allNodesData.findIndex((nodeData) => item.matchingId === nodeData.data.matchingId);
|
|
61
61
|
|
|
62
62
|
// apply status change to each node
|
|
63
63
|
if (index > -1 && this.allNodesData[index].data.state !== item.state) {
|
|
@@ -82,7 +82,7 @@ export default {
|
|
|
82
82
|
default: () => [],
|
|
83
83
|
type: Array,
|
|
84
84
|
// we only want functions in the rules array
|
|
85
|
-
validator: rules => rules.every(rule => ['function'].includes(typeof rule))
|
|
85
|
+
validator: (rules) => rules.every((rule) => ['function'].includes(typeof rule))
|
|
86
86
|
}
|
|
87
87
|
},
|
|
88
88
|
data() {
|
|
@@ -124,7 +124,7 @@ export default {
|
|
|
124
124
|
watch: {
|
|
125
125
|
value() {
|
|
126
126
|
this.lastUpdateWasFromValue = true;
|
|
127
|
-
this.rows = (this.value || []).map(v => ({ value: v }));
|
|
127
|
+
this.rows = (this.value || []).map((v) => ({ value: v }));
|
|
128
128
|
},
|
|
129
129
|
rows: {
|
|
130
130
|
deep: true,
|
|
@@ -186,9 +186,17 @@ export default {
|
|
|
186
186
|
}
|
|
187
187
|
event.preventDefault();
|
|
188
188
|
const text = event.clipboardData.getData('text/plain');
|
|
189
|
-
const split = text.split('\n').map(value => ({ value }));
|
|
189
|
+
const split = text.split('\n').map((value) => ({ value }));
|
|
190
|
+
|
|
191
|
+
if (split.length === 1) {
|
|
192
|
+
// It's not multi-line, so don't treat it as such
|
|
193
|
+
return;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
event.preventDefault();
|
|
190
197
|
|
|
191
198
|
this.rows.splice(index, 1, ...split);
|
|
199
|
+
|
|
192
200
|
this.update();
|
|
193
201
|
}
|
|
194
202
|
},
|
|
@@ -29,7 +29,7 @@ export default {
|
|
|
29
29
|
computed: {
|
|
30
30
|
filteredOptions() {
|
|
31
31
|
return this.options
|
|
32
|
-
.filter(option => !this.value.includes(option.value));
|
|
32
|
+
.filter((option) => !this.value.includes(option.value));
|
|
33
33
|
},
|
|
34
34
|
|
|
35
35
|
addAllowed() {
|
|
@@ -43,7 +43,7 @@ export default {
|
|
|
43
43
|
this.$emit(value);
|
|
44
44
|
},
|
|
45
45
|
calculateOptions(value) {
|
|
46
|
-
const valueOption = this.options.find(o => o.value === value);
|
|
46
|
+
const valueOption = this.options.find((o) => o.value === value);
|
|
47
47
|
|
|
48
48
|
if (valueOption) {
|
|
49
49
|
return [valueOption, ...this.filteredOptions];
|
|
@@ -58,6 +58,11 @@ export default {
|
|
|
58
58
|
rawData: {
|
|
59
59
|
type: Boolean,
|
|
60
60
|
default: false
|
|
61
|
+
},
|
|
62
|
+
|
|
63
|
+
accept: {
|
|
64
|
+
type: String,
|
|
65
|
+
default: '*'
|
|
61
66
|
}
|
|
62
67
|
},
|
|
63
68
|
|
|
@@ -151,6 +156,7 @@ export default {
|
|
|
151
156
|
class="hide"
|
|
152
157
|
:multiple="multiple"
|
|
153
158
|
:webkitdirectory="directory"
|
|
159
|
+
:accept="accept"
|
|
154
160
|
@change="fileChange"
|
|
155
161
|
>
|
|
156
162
|
</button>
|