@rancher/shell 3.0.5-rc.1 → 3.0.5-rc.3
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/data/aws-regions.json +2 -0
- package/assets/images/providers/sks.svg +1 -0
- package/assets/styles/base/_helpers.scss +4 -0
- package/assets/styles/base/_variables.scss +1 -0
- package/assets/styles/global/_layout.scss +0 -1
- package/assets/translations/en-us.yaml +92 -34
- package/assets/translations/zh-hans.yaml +4 -13
- package/chart/monitoring/index.vue +4 -2
- package/components/ActionDropdownShell.vue +71 -0
- package/components/AppModal.vue +18 -4
- package/components/AsyncButton.vue +2 -0
- package/components/CodeMirror.vue +3 -3
- package/components/CommunityLinks.vue +3 -58
- package/components/CruResource.vue +109 -16
- package/components/ExplorerProjectsNamespaces.vue +19 -6
- package/components/FixedBanner.vue +19 -5
- package/components/GlobalRoleBindings.vue +5 -1
- package/components/GrowlManager.vue +1 -0
- package/components/LandingPagePreference.vue +2 -0
- package/components/LocaleSelector.vue +1 -1
- package/components/ModalManager.vue +55 -0
- package/components/PaginatedResourceTable.vue +7 -0
- package/components/PromptModal.vue +47 -8
- package/components/ResourceDetail/Masthead.vue +38 -13
- package/components/ResourceDetail/__tests__/Masthead.test.ts +5 -1
- package/components/ResourceDetail/index.vue +47 -12
- package/components/ResourceList/index.vue +2 -1
- package/components/ResourceTable.vue +54 -19
- package/components/SideNav.vue +5 -1
- package/components/SlideInPanelManager.vue +125 -0
- package/components/SortableTable/THead.vue +5 -2
- package/components/SortableTable/actions.js +1 -1
- package/components/SortableTable/index.vue +54 -40
- package/components/SortableTable/paging.js +16 -19
- package/components/SortableTable/selection.js +1 -12
- package/components/Tabbed/index.vue +6 -0
- package/components/Wizard.vue +2 -2
- package/components/__tests__/AsyncButton.test.ts +39 -0
- package/components/__tests__/CruResource.test.ts +63 -0
- package/components/__tests__/ModalManager.spec.ts +176 -0
- package/components/__tests__/PromptModal.test.ts +146 -0
- package/components/__tests__/SlideInPanelManager.spec.ts +166 -0
- package/components/auth/AuthBanner.vue +13 -11
- package/components/auth/Principal.vue +1 -0
- package/components/auth/login/ldap.vue +1 -1
- package/components/fleet/FleetResources.vue +21 -6
- package/components/form/ArrayList.vue +138 -118
- package/components/form/BannerSettings.vue +149 -85
- package/components/form/ColorInput.vue +35 -6
- package/components/form/EnvVars.vue +1 -0
- package/components/form/KeyValue.vue +10 -7
- package/components/form/LabeledSelect.vue +25 -23
- package/components/form/MatchExpressions.vue +9 -2
- package/components/form/NameNsDescription.vue +6 -2
- package/components/form/NotificationSettings.vue +15 -1
- package/components/form/Password.vue +1 -0
- package/components/form/Probe.vue +1 -0
- package/components/form/ResourceSelector.vue +26 -23
- package/components/form/ResourceTabs/index.vue +2 -1
- package/components/form/SSHKnownHosts/__tests__/KnownHostsEditDialog.test.ts +15 -34
- package/components/form/SSHKnownHosts/index.vue +14 -11
- package/components/form/Select.vue +8 -15
- package/components/form/UnitInput.vue +13 -0
- package/components/form/ValueFromResource.vue +12 -12
- package/components/form/__tests__/ArrayList.test.ts +34 -2
- package/components/form/__tests__/ColorInput.test.ts +35 -0
- package/components/form/__tests__/KeyValue.test.ts +36 -0
- package/components/form/__tests__/LabeledSelect.test.ts +73 -0
- package/components/form/__tests__/SSHKnownHosts.test.ts +11 -2
- package/components/form/__tests__/Select.test.ts +34 -1
- package/components/form/__tests__/UnitInput.test.ts +23 -1
- package/components/formatter/ClusterLink.vue +5 -8
- package/components/formatter/Description.vue +30 -0
- package/components/formatter/__tests__/ClusterLink.test.ts +2 -32
- package/components/nav/Group.vue +12 -4
- package/components/nav/Header.vue +16 -43
- package/components/nav/NamespaceFilter.vue +134 -86
- package/components/nav/TopLevelMenu.vue +4 -5
- package/components/nav/WindowManager/ContainerLogs.vue +87 -61
- package/components/nav/WindowManager/ContainerLogsActions.vue +76 -0
- package/components/nav/WindowManager/index.vue +1 -0
- package/components/templates/default.vue +6 -3
- package/components/templates/home.vue +6 -0
- package/components/templates/plain.vue +6 -3
- package/composables/focusTrap.ts +12 -4
- package/config/product/explorer.js +16 -13
- package/config/product/manager.js +1 -28
- package/config/settings.ts +11 -13
- package/config/store.js +4 -0
- package/config/table-headers.js +7 -5
- package/config/uiplugins.js +5 -1
- package/core/types.ts +7 -6
- package/detail/catalog.cattle.io.app.vue +5 -1
- package/detail/fleet.cattle.io.bundle.vue +70 -6
- package/detail/fleet.cattle.io.gitrepo.vue +1 -1
- package/detail/namespace.vue +0 -3
- package/detail/node.vue +17 -13
- package/detail/provisioning.cattle.io.cluster.vue +85 -9
- package/detail/service.vue +0 -1
- package/detail/workload/index.vue +21 -34
- package/dialog/AddCustomBadgeDialog.vue +0 -1
- package/{pages/c/_cluster/uiplugins/AddExtensionRepos.vue → dialog/AddExtensionReposDialog.vue} +72 -42
- package/dialog/AssignToDialog.vue +176 -0
- package/dialog/ChangePasswordDialog.vue +106 -0
- package/{pages/c/_cluster/uiplugins/DeveloperInstallDialog.vue → dialog/DeveloperLoadExtensionDialog.vue} +74 -71
- package/dialog/DisableAuthProviderDialog.vue +101 -0
- package/dialog/DrainNode.vue +1 -1
- package/{pages/c/_cluster/uiplugins/CatalogList/CatalogLoadDialog.vue → dialog/ExtensionCatalogInstallDialog.vue} +100 -88
- package/{pages/c/_cluster/uiplugins/CatalogList/CatalogUninstallDialog.vue → dialog/ExtensionCatalogUninstallDialog.vue} +83 -65
- package/dialog/FeatureFlagListDialog.vue +288 -0
- package/dialog/ForceMachineRemoveDialog.vue +1 -1
- package/{components/Import.vue → dialog/ImportDialog.vue} +0 -5
- package/{pages/c/_cluster/uiplugins/InstallDialog.vue → dialog/InstallExtensionDialog.vue} +124 -106
- package/{components/form/SSHKnownHosts → dialog}/KnownHostsEditDialog.vue +52 -62
- package/dialog/MoveNamespaceDialog.vue +157 -0
- package/dialog/ScalePoolDownDialog.vue +1 -1
- package/{components/nav/Jump.vue → dialog/SearchDialog.vue} +34 -14
- package/{pages/c/_cluster/uiplugins/UninstallDialog.vue → dialog/UninstallExtensionDialog.vue} +67 -58
- package/dialog/WechatDialog.vue +57 -0
- package/edit/__tests__/service.test.ts +2 -1
- package/edit/auth/azuread.vue +1 -1
- package/edit/auth/github.vue +1 -1
- package/edit/auth/googleoauth.vue +1 -1
- package/edit/auth/ldap/index.vue +1 -1
- package/edit/auth/oidc.vue +1 -1
- package/edit/auth/saml.vue +1 -1
- package/edit/cloudcredential.vue +24 -10
- package/edit/management.cattle.io.user.vue +28 -3
- package/edit/namespace.vue +1 -4
- package/edit/networking.k8s.io.networkpolicy/PolicyRule.vue +3 -14
- package/edit/networking.k8s.io.networkpolicy/PolicyRuleTarget.vue +57 -62
- package/edit/networking.k8s.io.networkpolicy/PolicyRules.vue +3 -14
- package/edit/networking.k8s.io.networkpolicy/__tests__/PolicyRuleTarget.test.ts +72 -41
- package/edit/networking.k8s.io.networkpolicy/__tests__/utils/mock.json +17 -1
- package/edit/networking.k8s.io.networkpolicy/index.vue +18 -30
- package/edit/provisioning.cattle.io.cluster/CustomCommand.vue +4 -1
- package/edit/provisioning.cattle.io.cluster/SelectCredential.vue +26 -10
- package/edit/provisioning.cattle.io.cluster/__tests__/Advanced.test.ts +8 -8
- package/edit/provisioning.cattle.io.cluster/__tests__/DirectoryConfig.test.ts +26 -12
- package/edit/provisioning.cattle.io.cluster/__tests__/rke2.test.ts +66 -0
- package/edit/provisioning.cattle.io.cluster/__tests__/utils/rke2-test-data.ts +58 -0
- package/edit/provisioning.cattle.io.cluster/index.vue +21 -73
- package/edit/provisioning.cattle.io.cluster/rke2.vue +24 -7
- package/edit/provisioning.cattle.io.cluster/tabs/DirectoryConfig.vue +5 -3
- package/edit/provisioning.cattle.io.cluster/tabs/MachinePool.vue +4 -1
- package/edit/service.vue +13 -28
- package/initialize/install-plugins.js +2 -1
- package/list/harvesterhci.io.management.cluster.vue +4 -1
- package/list/management.cattle.io.feature.vue +4 -288
- package/list/workload.vue +6 -1
- package/machine-config/azure.vue +16 -4
- package/mixins/resource-fetch-api-pagination.js +55 -43
- package/mixins/resource-fetch.js +14 -5
- package/mixins/vue-select-overrides.js +0 -4
- package/models/__tests__/workload.test.ts +1 -0
- package/models/cluster/node.js +1 -0
- package/models/cluster.js +32 -2
- package/models/fleet.cattle.io.cluster.js +8 -2
- package/models/fleet.cattle.io.gitrepo.js +8 -34
- package/models/management.cattle.io.cluster.js +0 -20
- package/models/management.cattle.io.feature.js +7 -1
- package/models/management.cattle.io.node.js +7 -22
- package/models/management.cattle.io.nodepool.js +12 -0
- package/models/namespace.js +12 -1
- package/models/provisioning.cattle.io.cluster.js +18 -64
- package/models/service.js +24 -9
- package/models/workload.js +70 -31
- package/package.json +1 -1
- package/pages/about.vue +13 -3
- package/pages/account/index.vue +12 -5
- package/pages/auth/login.vue +7 -4
- package/pages/auth/setup.vue +1 -0
- package/pages/auth/verify.vue +9 -7
- package/pages/c/_cluster/apps/charts/install.vue +25 -26
- package/pages/c/_cluster/auth/config/index.vue +10 -12
- package/pages/c/_cluster/explorer/EventsTable.vue +38 -33
- package/pages/c/_cluster/explorer/index.vue +28 -15
- package/pages/c/_cluster/istio/index.vue +2 -2
- package/pages/c/_cluster/longhorn/index.vue +3 -3
- package/pages/c/_cluster/monitoring/index.vue +1 -1
- package/pages/c/_cluster/monitoring/monitor/_namespace/_id.vue +4 -2
- package/pages/c/_cluster/monitoring/monitor/create.vue +4 -2
- package/pages/c/_cluster/monitoring/route-receiver/_id.vue +4 -2
- package/pages/c/_cluster/monitoring/route-receiver/create.vue +5 -2
- package/pages/c/_cluster/neuvector/index.vue +1 -1
- package/pages/c/_cluster/settings/banners.vue +60 -5
- package/pages/c/_cluster/settings/performance.vue +7 -26
- package/pages/c/_cluster/uiplugins/CatalogList/index.vue +8 -10
- package/pages/c/_cluster/uiplugins/__tests__/AddExtensionRepos.test.ts +4 -7
- package/pages/c/_cluster/uiplugins/index.vue +98 -55
- package/pages/diagnostic.vue +12 -9
- package/pages/fail-whale.vue +8 -5
- package/pages/home.vue +11 -52
- package/pages/prefs.vue +7 -6
- package/plugins/clean-html.js +2 -0
- package/plugins/dashboard-store/__tests__/actions.test.ts +4 -1
- package/plugins/dashboard-store/actions.js +122 -21
- package/plugins/dashboard-store/getters.js +74 -3
- package/plugins/dashboard-store/mutations.js +10 -5
- package/plugins/dashboard-store/resource-class.js +23 -3
- package/plugins/internal-api/index.ts +37 -0
- package/plugins/internal-api/shared/base-api.ts +13 -0
- package/plugins/internal-api/shell/shell.api.ts +108 -0
- package/plugins/steve/__tests__/getters.test.ts +18 -11
- package/plugins/steve/__tests__/steve-class.test.ts +1 -0
- package/plugins/steve/actions.js +34 -24
- package/plugins/steve/getters.js +39 -10
- package/plugins/steve/steve-class.js +5 -0
- package/plugins/steve/steve-pagination-utils.ts +199 -37
- package/plugins/steve/worker/web-worker.advanced.js +3 -1
- package/public/index.html +1 -0
- package/rancher-components/Banner/Banner.test.ts +51 -3
- package/rancher-components/Banner/Banner.vue +28 -6
- package/rancher-components/Card/Card.vue +1 -1
- package/rancher-components/Form/Checkbox/Checkbox.test.ts +59 -1
- package/rancher-components/Form/Checkbox/Checkbox.vue +27 -3
- package/rancher-components/Form/LabeledInput/LabeledInput.test.ts +51 -0
- package/rancher-components/Form/LabeledInput/LabeledInput.vue +20 -2
- package/rancher-components/Form/Radio/RadioButton.test.ts +36 -1
- package/rancher-components/Form/Radio/RadioButton.vue +20 -4
- package/rancher-components/Form/Radio/RadioGroup.test.ts +60 -0
- package/rancher-components/Form/Radio/RadioGroup.vue +75 -35
- package/rancher-components/Form/ToggleSwitch/ToggleSwitch.test.ts +17 -0
- package/rancher-components/Form/ToggleSwitch/ToggleSwitch.vue +26 -1
- package/rancher-components/LabeledTooltip/LabeledTooltip.vue +10 -1
- package/rancher-components/RcButton/RcButton.vue +2 -1
- package/rancher-components/RcButton/types.ts +1 -0
- package/rancher-components/RcDropdown/RcDropdown.vue +17 -6
- package/rancher-components/RcDropdown/RcDropdownItem.vue +3 -56
- package/rancher-components/RcDropdown/RcDropdownItemCheckbox.vue +68 -0
- package/rancher-components/RcDropdown/RcDropdownItemSelect.vue +92 -0
- package/rancher-components/RcDropdown/index.ts +2 -0
- package/rancher-components/RcDropdown/useDropdownItem.ts +63 -0
- package/scripts/extension/bundle +20 -0
- package/scripts/extension/helm/charts/ui-plugin-server/templates/cr.yaml +2 -1
- package/scripts/extension/helm/charts/ui-plugin-server/values.yaml +2 -0
- package/scripts/extension/helmpatch +44 -31
- package/scripts/extension/publish +12 -13
- package/scripts/typegen.sh +2 -4
- package/store/action-menu.js +26 -56
- package/store/features.js +0 -1
- package/store/index.js +5 -0
- package/store/modal.ts +71 -0
- package/store/slideInPanel.ts +47 -0
- package/store/type-map.js +8 -1
- package/store/type-map.utils.ts +49 -6
- package/types/fleet.d.ts +1 -1
- package/types/global-vue.d.ts +5 -0
- package/types/internal-api/shell/growl.d.ts +25 -0
- package/types/internal-api/shell/modal.d.ts +77 -0
- package/types/internal-api/shell/slideIn.d.ts +15 -0
- package/types/kube/kube-api.ts +22 -0
- package/types/resources/fleet.d.ts +0 -14
- package/types/resources/settings.d.ts +0 -4
- package/types/shell/index.d.ts +375 -306
- package/types/store/dashboard-store.types.ts +24 -1
- package/types/store/pagination.types.ts +19 -2
- package/types/vue-shim.d.ts +4 -1
- package/utils/__mocks__/tabbable.js +13 -0
- package/utils/__tests__/object.test.ts +38 -4
- package/utils/cluster.js +24 -20
- package/utils/fleet.ts +15 -73
- package/utils/grafana.js +1 -0
- package/utils/object.js +36 -5
- package/utils/pagination-utils.ts +6 -2
- package/utils/perf-setting.utils.ts +28 -0
- package/utils/selector-typed.ts +205 -0
- package/utils/selector.js +29 -6
- package/utils/uiplugins.ts +10 -6
- package/utils/v-sphere.ts +5 -1
- package/utils/validators/formRules/__tests__/index.test.ts +10 -1
- package/utils/validators/formRules/index.ts +27 -3
- package/components/AssignTo.vue +0 -199
- package/components/DisableAuthProviderModal.vue +0 -115
- package/components/MoveModal.vue +0 -167
- package/components/PromptChangePassword.vue +0 -123
- package/components/fleet/FleetBundleResources.vue +0 -86
- package/components/formatter/RKETemplateName.vue +0 -37
- package/dialog/SaveAsRKETemplateDialog.vue +0 -139
- package/types/vue-shim.d +0 -20
|
@@ -15,14 +15,8 @@ import Tab from '@shell/components/Tabbed/Tab.vue';
|
|
|
15
15
|
import IconMessage from '@shell/components/IconMessage.vue';
|
|
16
16
|
import LazyImage from '@shell/components/LazyImage';
|
|
17
17
|
import { BadgeState } from '@components/BadgeState';
|
|
18
|
-
import UninstallDialog from './UninstallDialog.vue';
|
|
19
|
-
import InstallDialog from './InstallDialog.vue';
|
|
20
|
-
import CatalogLoadDialog from './CatalogList/CatalogLoadDialog.vue';
|
|
21
|
-
import CatalogUninstallDialog from './CatalogList/CatalogUninstallDialog.vue';
|
|
22
|
-
import DeveloperInstallDialog from './DeveloperInstallDialog.vue';
|
|
23
18
|
import PluginInfoPanel from './PluginInfoPanel.vue';
|
|
24
19
|
import SetupUIPlugins from './SetupUIPlugins.vue';
|
|
25
|
-
import AddExtensionRepos from './AddExtensionRepos';
|
|
26
20
|
import CatalogList from './CatalogList/index.vue';
|
|
27
21
|
import Banner from '@components/Banner/Banner.vue';
|
|
28
22
|
import {
|
|
@@ -53,20 +47,14 @@ export default {
|
|
|
53
47
|
components: {
|
|
54
48
|
ActionMenu,
|
|
55
49
|
BadgeState,
|
|
56
|
-
DeveloperInstallDialog,
|
|
57
50
|
IconMessage,
|
|
58
51
|
CatalogList,
|
|
59
52
|
Banner,
|
|
60
|
-
CatalogLoadDialog,
|
|
61
|
-
CatalogUninstallDialog,
|
|
62
|
-
InstallDialog,
|
|
63
53
|
LazyImage,
|
|
64
54
|
PluginInfoPanel,
|
|
65
55
|
Tab,
|
|
66
56
|
Tabbed,
|
|
67
|
-
UninstallDialog,
|
|
68
57
|
SetupUIPlugins,
|
|
69
|
-
AddExtensionRepos,
|
|
70
58
|
TabTitle
|
|
71
59
|
},
|
|
72
60
|
|
|
@@ -253,15 +241,13 @@ export default {
|
|
|
253
241
|
// Label can be overridden by chart annotation
|
|
254
242
|
const label = uiPluginAnnotation(chart, UI_PLUGIN_CHART_ANNOTATIONS.DISPLAY_NAME) || chart.chartNameDisplay;
|
|
255
243
|
const item = {
|
|
256
|
-
name:
|
|
244
|
+
name: chart.chartName,
|
|
257
245
|
label,
|
|
258
|
-
description:
|
|
259
|
-
id:
|
|
260
|
-
versions:
|
|
261
|
-
installed:
|
|
262
|
-
builtin:
|
|
263
|
-
experimental: uiPluginHasAnnotation(chart, CATALOG_ANNOTATIONS.EXPERIMENTAL, 'true'),
|
|
264
|
-
certified: uiPluginHasAnnotation(chart, CATALOG_ANNOTATIONS.CERTIFIED, CATALOG_ANNOTATIONS._RANCHER)
|
|
246
|
+
description: chart.chartDescription,
|
|
247
|
+
id: chart.id,
|
|
248
|
+
versions: [],
|
|
249
|
+
installed: false,
|
|
250
|
+
builtin: false,
|
|
265
251
|
};
|
|
266
252
|
|
|
267
253
|
item.versions = [...chart.versions];
|
|
@@ -282,9 +268,15 @@ export default {
|
|
|
282
268
|
const latestNotCompatible = item.versions.find((version) => !version.isVersionCompatible);
|
|
283
269
|
|
|
284
270
|
if (latestCompatible) {
|
|
271
|
+
item.experimental = latestCompatible?.annotations?.[CATALOG_ANNOTATIONS.EXPERIMENTAL] === 'true';
|
|
272
|
+
item.certified = latestCompatible?.annotations?.[CATALOG_ANNOTATIONS.CERTIFIED] === CATALOG_ANNOTATIONS._RANCHER;
|
|
273
|
+
|
|
285
274
|
item.displayVersion = latestCompatible.version;
|
|
286
275
|
item.icon = latestCompatible.icon;
|
|
287
276
|
} else {
|
|
277
|
+
item.experimental = uiPluginHasAnnotation(chart, CATALOG_ANNOTATIONS.EXPERIMENTAL, 'true');
|
|
278
|
+
item.certified = uiPluginHasAnnotation(chart, CATALOG_ANNOTATIONS.CERTIFIED, CATALOG_ANNOTATIONS._RANCHER);
|
|
279
|
+
|
|
288
280
|
item.displayVersion = item.versions?.[0]?.version;
|
|
289
281
|
item.icon = chart.icon || latestCompatible?.annotations?.['catalog.cattle.io/ui-icon'];
|
|
290
282
|
}
|
|
@@ -323,6 +315,7 @@ export default {
|
|
|
323
315
|
if (!chart) {
|
|
324
316
|
// A plugin is loaded, but there is no chart, so add an item so that it shows up
|
|
325
317
|
const rancher = typeof p.metadata?.rancher === 'object' ? p.metadata.rancher : {};
|
|
318
|
+
|
|
326
319
|
const label = rancher.annotations?.[UI_PLUGIN_CHART_ANNOTATIONS.DISPLAY_NAME] || p.name;
|
|
327
320
|
const item = {
|
|
328
321
|
name: p.name,
|
|
@@ -334,6 +327,8 @@ export default {
|
|
|
334
327
|
displayVersion: p.metadata?.version || '-',
|
|
335
328
|
installed: true,
|
|
336
329
|
builtin: !!p.builtin,
|
|
330
|
+
experimental: rancher?.annotations?.[CATALOG_ANNOTATIONS.EXPERIMENTAL] === 'true',
|
|
331
|
+
certified: rancher?.annotations?.[CATALOG_ANNOTATIONS.CERTIFIED] === CATALOG_ANNOTATIONS._RANCHER
|
|
337
332
|
};
|
|
338
333
|
|
|
339
334
|
// Built-in plugins can chose to be hidden - used where we implement as extensions
|
|
@@ -357,7 +352,15 @@ export default {
|
|
|
357
352
|
chart.installing = this.installing[chart.name];
|
|
358
353
|
|
|
359
354
|
// Check for upgrade
|
|
355
|
+
// Use the currently installed version's metadata to show/hide the experimental and certified labels
|
|
360
356
|
if (chart.installableVersions?.length && p.version !== chart.installableVersions?.[0]?.version) {
|
|
357
|
+
const installedVersion = (chart.installableVersions || []).find((v) => v?.version === p.version);
|
|
358
|
+
|
|
359
|
+
if (installedVersion) {
|
|
360
|
+
chart.experimental = installedVersion?.annotations?.[CATALOG_ANNOTATIONS.EXPERIMENTAL] === 'true';
|
|
361
|
+
chart.certified = installedVersion?.annotations?.[CATALOG_ANNOTATIONS.CERTIFIED] === CATALOG_ANNOTATIONS._RANCHER;
|
|
362
|
+
}
|
|
363
|
+
|
|
361
364
|
chart.upgrade = chart.installableVersions[0].version;
|
|
362
365
|
}
|
|
363
366
|
} else {
|
|
@@ -525,21 +528,61 @@ export default {
|
|
|
525
528
|
|
|
526
529
|
// Developer Load is in the action menu
|
|
527
530
|
showDeveloperLoadDialog() {
|
|
528
|
-
this.$
|
|
531
|
+
this.$store.dispatch('management/promptModal', {
|
|
532
|
+
component: 'DeveloperLoadExtensionDialog',
|
|
533
|
+
returnFocusSelector: '[data-testid="extensions-page-menu"]',
|
|
534
|
+
componentProps: {
|
|
535
|
+
closed: (res) => {
|
|
536
|
+
this.didInstall(res);
|
|
537
|
+
}
|
|
538
|
+
}
|
|
539
|
+
});
|
|
529
540
|
},
|
|
530
541
|
|
|
531
542
|
showAddExtensionReposDialog() {
|
|
532
543
|
this.updateAddReposSetting();
|
|
533
544
|
this.refreshCharts(true);
|
|
534
|
-
|
|
545
|
+
|
|
546
|
+
this.$store.dispatch('management/promptModal', {
|
|
547
|
+
component: 'AddExtensionReposDialog',
|
|
548
|
+
testId: 'add-extensions-repos-modal',
|
|
549
|
+
componentProps: {
|
|
550
|
+
done: () => {
|
|
551
|
+
this.updateInstallStatus(true);
|
|
552
|
+
}
|
|
553
|
+
}
|
|
554
|
+
});
|
|
535
555
|
},
|
|
536
556
|
|
|
537
557
|
showCatalogLoadDialog() {
|
|
538
|
-
this.$
|
|
558
|
+
this.$store.dispatch('management/promptModal', {
|
|
559
|
+
component: 'ExtensionCatalogInstallDialog',
|
|
560
|
+
returnFocusSelector: '[data-testid="extensions-catalog-load-dialog"]',
|
|
561
|
+
componentProps: {
|
|
562
|
+
refresh: () => {
|
|
563
|
+
this.reloadRequired = true;
|
|
564
|
+
},
|
|
565
|
+
closed: (res) => {
|
|
566
|
+
this.didInstall(res);
|
|
567
|
+
}
|
|
568
|
+
}
|
|
569
|
+
});
|
|
539
570
|
},
|
|
540
571
|
|
|
541
572
|
showCatalogUninstallDialog(ev) {
|
|
542
|
-
this.$
|
|
573
|
+
this.$store.dispatch('management/promptModal', {
|
|
574
|
+
component: 'ExtensionCatalogUninstallDialog',
|
|
575
|
+
returnFocusSelector: '[data-testid="extensions-catalog-load-dialog"]',
|
|
576
|
+
componentProps: {
|
|
577
|
+
catalog: ev,
|
|
578
|
+
refresh: () => {
|
|
579
|
+
this.reloadRequired = true;
|
|
580
|
+
},
|
|
581
|
+
closed: (res) => {
|
|
582
|
+
this.didUninstall(res);
|
|
583
|
+
}
|
|
584
|
+
}
|
|
585
|
+
});
|
|
543
586
|
},
|
|
544
587
|
|
|
545
588
|
showInstallDialog(plugin, mode, ev) {
|
|
@@ -547,7 +590,22 @@ export default {
|
|
|
547
590
|
ev.preventDefault();
|
|
548
591
|
ev.stopPropagation();
|
|
549
592
|
|
|
550
|
-
this.$
|
|
593
|
+
this.$store.dispatch('management/promptModal', {
|
|
594
|
+
component: 'InstallExtensionDialog',
|
|
595
|
+
testId: 'install-extension-modal',
|
|
596
|
+
returnFocusSelector: `[data-testid="extension-card-${ mode }-btn-${ plugin?.name }"]`,
|
|
597
|
+
returnFocusFirstIterableNodeSelector: '#extensions-main-page',
|
|
598
|
+
componentProps: {
|
|
599
|
+
plugin,
|
|
600
|
+
mode,
|
|
601
|
+
updateStatus: (pluginName, type) => {
|
|
602
|
+
this.updatePluginInstallStatus(pluginName, type);
|
|
603
|
+
},
|
|
604
|
+
closed: (res) => {
|
|
605
|
+
this.didInstall(res);
|
|
606
|
+
}
|
|
607
|
+
}
|
|
608
|
+
});
|
|
551
609
|
},
|
|
552
610
|
|
|
553
611
|
showUninstallDialog(plugin, ev) {
|
|
@@ -555,7 +613,21 @@ export default {
|
|
|
555
613
|
ev.preventDefault();
|
|
556
614
|
ev.stopPropagation();
|
|
557
615
|
|
|
558
|
-
this.$
|
|
616
|
+
this.$store.dispatch('management/promptModal', {
|
|
617
|
+
component: 'UninstallExtensionDialog',
|
|
618
|
+
testId: 'uninstall-extension-modal',
|
|
619
|
+
returnFocusSelector: `[data-testid="extension-card-uninstall-btn-${ plugin.name }"]`,
|
|
620
|
+
returnFocusFirstIterableNodeSelector: '#extensions-main-page',
|
|
621
|
+
componentProps: {
|
|
622
|
+
plugin,
|
|
623
|
+
updateStatus: (pluginName, type) => {
|
|
624
|
+
this.updatePluginInstallStatus(pluginName, type);
|
|
625
|
+
},
|
|
626
|
+
closed: (res) => {
|
|
627
|
+
this.didUninstall(res);
|
|
628
|
+
}
|
|
629
|
+
}
|
|
630
|
+
});
|
|
559
631
|
},
|
|
560
632
|
|
|
561
633
|
didUninstall(plugin) {
|
|
@@ -996,35 +1068,6 @@ export default {
|
|
|
996
1068
|
</div>
|
|
997
1069
|
</template>
|
|
998
1070
|
</div>
|
|
999
|
-
|
|
1000
|
-
<InstallDialog
|
|
1001
|
-
ref="installDialog"
|
|
1002
|
-
@closed="didInstall"
|
|
1003
|
-
@update="updatePluginInstallStatus"
|
|
1004
|
-
/>
|
|
1005
|
-
<UninstallDialog
|
|
1006
|
-
ref="uninstallDialog"
|
|
1007
|
-
@closed="didUninstall"
|
|
1008
|
-
@update="updatePluginInstallStatus"
|
|
1009
|
-
/>
|
|
1010
|
-
<CatalogLoadDialog
|
|
1011
|
-
ref="catalogLoadDialog"
|
|
1012
|
-
@closed="didInstall"
|
|
1013
|
-
@refresh="() => reloadRequired = true"
|
|
1014
|
-
/>
|
|
1015
|
-
<CatalogUninstallDialog
|
|
1016
|
-
ref="catalogUninstallDialog"
|
|
1017
|
-
@closed="didUninstall"
|
|
1018
|
-
@refresh="() => reloadRequired = true"
|
|
1019
|
-
/>
|
|
1020
|
-
<DeveloperInstallDialog
|
|
1021
|
-
ref="developerInstallDialog"
|
|
1022
|
-
@closed="didInstall"
|
|
1023
|
-
/>
|
|
1024
|
-
<AddExtensionRepos
|
|
1025
|
-
ref="addExtensionReposDialog"
|
|
1026
|
-
@done="updateInstallStatus(true)"
|
|
1027
|
-
/>
|
|
1028
1071
|
</div>
|
|
1029
1072
|
</template>
|
|
1030
1073
|
|
package/pages/diagnostic.vue
CHANGED
|
@@ -83,6 +83,16 @@ export default {
|
|
|
83
83
|
},
|
|
84
84
|
|
|
85
85
|
data() {
|
|
86
|
+
return {
|
|
87
|
+
systemInformation: null,
|
|
88
|
+
topFifteenForResponseTime: null,
|
|
89
|
+
responseTimes: null,
|
|
90
|
+
finalCounts: null,
|
|
91
|
+
includeResponseTimes: true,
|
|
92
|
+
};
|
|
93
|
+
},
|
|
94
|
+
|
|
95
|
+
created() {
|
|
86
96
|
const {
|
|
87
97
|
userAgent,
|
|
88
98
|
userAgentData,
|
|
@@ -129,14 +139,7 @@ export default {
|
|
|
129
139
|
systemInformation.jsMemory.value += `, ${ this.t('about.diagnostic.systemInformation.memUsedJsHeapSize', { usedJSHeapSize: window?.performance?.memory?.usedJSHeapSize }) }`;
|
|
130
140
|
}
|
|
131
141
|
|
|
132
|
-
|
|
133
|
-
systemInformation,
|
|
134
|
-
topFifteenForResponseTime: null,
|
|
135
|
-
responseTimes: null,
|
|
136
|
-
finalCounts: null,
|
|
137
|
-
includeResponseTimes: true,
|
|
138
|
-
storeMapping: this.$store?._modules?.root?.state,
|
|
139
|
-
};
|
|
142
|
+
this.systemInformation = systemInformation;
|
|
140
143
|
},
|
|
141
144
|
|
|
142
145
|
computed: {
|
|
@@ -157,7 +160,7 @@ export default {
|
|
|
157
160
|
const fileName = 'rancher-diagnostic-data.json';
|
|
158
161
|
const data = {
|
|
159
162
|
systemInformation: this.systemInformation,
|
|
160
|
-
storeMapping: this.parseStoreData(this
|
|
163
|
+
storeMapping: this.parseStoreData(this.$store?._modules?.root?.state),
|
|
161
164
|
resourceCounts: this.finalCounts,
|
|
162
165
|
responseTimes: this.responseTimes,
|
|
163
166
|
};
|
package/pages/fail-whale.vue
CHANGED
|
@@ -17,17 +17,19 @@ export default {
|
|
|
17
17
|
mixins: [Brand, BrowserTabVisibility],
|
|
18
18
|
|
|
19
19
|
data() {
|
|
20
|
+
return {
|
|
21
|
+
previousRoute: '',
|
|
22
|
+
styles: { '--custom-content': `'${ this.t('nav.failWhale.separator') }'` }
|
|
23
|
+
};
|
|
24
|
+
},
|
|
25
|
+
|
|
26
|
+
created() {
|
|
20
27
|
const store = this.$store;
|
|
21
28
|
|
|
22
29
|
if (!store.state.error && !store.state.cameFromError) {
|
|
23
30
|
store.commit('cameFromError');
|
|
24
31
|
this.$router.replace('/');
|
|
25
32
|
}
|
|
26
|
-
|
|
27
|
-
return {
|
|
28
|
-
previousRoute: '',
|
|
29
|
-
styles: { '--custom-content': `'${ this.t('nav.failWhale.separator') }'` }
|
|
30
|
-
};
|
|
31
33
|
},
|
|
32
34
|
|
|
33
35
|
computed: {
|
|
@@ -108,6 +110,7 @@ export default {
|
|
|
108
110
|
<hr
|
|
109
111
|
class="custom-content"
|
|
110
112
|
:style="styles"
|
|
113
|
+
role="none"
|
|
111
114
|
>
|
|
112
115
|
<p class="mt-20">
|
|
113
116
|
<a
|
package/pages/home.vue
CHANGED
|
@@ -226,10 +226,6 @@ export default defineComponent({
|
|
|
226
226
|
readWhatsNewAlready() {
|
|
227
227
|
return readReleaseNotes(this.$store);
|
|
228
228
|
},
|
|
229
|
-
|
|
230
|
-
showSetLoginBanner() {
|
|
231
|
-
return this.homePageCards?.setLoginPage;
|
|
232
|
-
},
|
|
233
229
|
},
|
|
234
230
|
|
|
235
231
|
async created() {
|
|
@@ -415,10 +411,6 @@ export default defineComponent({
|
|
|
415
411
|
markReadReleaseNotes(this.$store);
|
|
416
412
|
},
|
|
417
413
|
|
|
418
|
-
showUserPrefs() {
|
|
419
|
-
this.$router.push({ name: 'prefs' });
|
|
420
|
-
},
|
|
421
|
-
|
|
422
414
|
async resetCards() {
|
|
423
415
|
const value = this.$store.getters['prefs/get'](HIDE_HOME_PAGE_CARDS) || {};
|
|
424
416
|
|
|
@@ -441,21 +433,6 @@ export default defineComponent({
|
|
|
441
433
|
await this.$store.dispatch('prefs/set', { key: HIDE_HOME_PAGE_CARDS, value });
|
|
442
434
|
},
|
|
443
435
|
|
|
444
|
-
async closeSetLoginBanner(retry = 0) {
|
|
445
|
-
let value = this.$store.getters['prefs/get'](HIDE_HOME_PAGE_CARDS);
|
|
446
|
-
|
|
447
|
-
if (value === true || value === false || value.length > 0) {
|
|
448
|
-
value = {};
|
|
449
|
-
}
|
|
450
|
-
value.setLoginPage = true;
|
|
451
|
-
|
|
452
|
-
const res = await this.$store.dispatch('prefs/set', { key: HIDE_HOME_PAGE_CARDS, value });
|
|
453
|
-
|
|
454
|
-
if (retry === 0 && res?.type === 'error' && res?.status === 500) {
|
|
455
|
-
await this.closeSetLoginBanner(retry + 1);
|
|
456
|
-
}
|
|
457
|
-
},
|
|
458
|
-
|
|
459
436
|
/**
|
|
460
437
|
* Filter out hidden clusters from list of all clusters
|
|
461
438
|
*/
|
|
@@ -549,31 +526,6 @@ export default defineComponent({
|
|
|
549
526
|
</div>
|
|
550
527
|
<div class="row home-panels">
|
|
551
528
|
<div class="col main-panel">
|
|
552
|
-
<div
|
|
553
|
-
v-if="!showSetLoginBanner"
|
|
554
|
-
class="mb-10 row"
|
|
555
|
-
>
|
|
556
|
-
<div class="col span-12">
|
|
557
|
-
<Banner
|
|
558
|
-
color="set-login-page mt-0"
|
|
559
|
-
data-testid="set-login-page-banner"
|
|
560
|
-
:closable="true"
|
|
561
|
-
@close="closeSetLoginBanner()"
|
|
562
|
-
>
|
|
563
|
-
<div>
|
|
564
|
-
{{ t('landing.landingPrefs.title') }}
|
|
565
|
-
</div>
|
|
566
|
-
<a
|
|
567
|
-
class="hand mr-20"
|
|
568
|
-
tabindex="0"
|
|
569
|
-
:aria-label="t('landing.landingPrefs.userPrefs')"
|
|
570
|
-
@click.prevent.stop="showUserPrefs"
|
|
571
|
-
@keyup.prevent.stop.enter="showUserPrefs"
|
|
572
|
-
@keyup.prevent.stop.space="showUserPrefs"
|
|
573
|
-
><span v-clean-html="t('landing.landingPrefs.userPrefs')" /></a>
|
|
574
|
-
</Banner>
|
|
575
|
-
</div>
|
|
576
|
-
</div>
|
|
577
529
|
<div class="row panel">
|
|
578
530
|
<div
|
|
579
531
|
v-if="mcm"
|
|
@@ -671,6 +623,11 @@ export default defineComponent({
|
|
|
671
623
|
v-clean-tooltip="row.unavailableMachines"
|
|
672
624
|
class="conditions-alert-icon icon-alert icon"
|
|
673
625
|
/>
|
|
626
|
+
<i
|
|
627
|
+
v-if="row.isRke1"
|
|
628
|
+
v-clean-tooltip="t('cluster.rke1Unsupported')"
|
|
629
|
+
class="rke1-unsupported-icon icon-warning icon"
|
|
630
|
+
/>
|
|
674
631
|
</p>
|
|
675
632
|
<p
|
|
676
633
|
v-if="row.description"
|
|
@@ -754,7 +711,7 @@ export default defineComponent({
|
|
|
754
711
|
}
|
|
755
712
|
}
|
|
756
713
|
|
|
757
|
-
.
|
|
714
|
+
.whats-new {
|
|
758
715
|
> :deep() .banner__content {
|
|
759
716
|
display: flex;
|
|
760
717
|
|
|
@@ -767,9 +724,6 @@ export default defineComponent({
|
|
|
767
724
|
}
|
|
768
725
|
}
|
|
769
726
|
|
|
770
|
-
.banner.set-login-page {
|
|
771
|
-
border: 1px solid var(--border);
|
|
772
|
-
}
|
|
773
727
|
.table-heading {
|
|
774
728
|
align-items: center;
|
|
775
729
|
display: flex;
|
|
@@ -824,6 +778,11 @@ export default defineComponent({
|
|
|
824
778
|
color: var(--error);
|
|
825
779
|
margin-left: 4px;
|
|
826
780
|
}
|
|
781
|
+
|
|
782
|
+
.rke1-unsupported-icon {
|
|
783
|
+
color: var(--warning);
|
|
784
|
+
margin-left: 4px;
|
|
785
|
+
}
|
|
827
786
|
}
|
|
828
787
|
|
|
829
788
|
// Hide the side-panel showing links when the screen is small
|
package/pages/prefs.vue
CHANGED
|
@@ -225,7 +225,7 @@ export default {
|
|
|
225
225
|
v-if="!isSingleProduct"
|
|
226
226
|
class="mt-10 mb-10"
|
|
227
227
|
>
|
|
228
|
-
<hr>
|
|
228
|
+
<hr role="none">
|
|
229
229
|
<h4 v-t="'prefs.landing.label'" />
|
|
230
230
|
<LandingPagePreference
|
|
231
231
|
data-testid="prefs__landingPagePreference"
|
|
@@ -233,7 +233,7 @@ export default {
|
|
|
233
233
|
</div>
|
|
234
234
|
<!-- Display Settings -->
|
|
235
235
|
<div class="mt-10 mb-10">
|
|
236
|
-
<hr>
|
|
236
|
+
<hr role="none">
|
|
237
237
|
<h4 v-t="'prefs.displaySettings.title'" />
|
|
238
238
|
<p class="set-landing-leadin">
|
|
239
239
|
{{ t('prefs.displaySettings.detail', {}, raw=true) }}
|
|
@@ -277,7 +277,7 @@ export default {
|
|
|
277
277
|
v-if="!isSingleProduct"
|
|
278
278
|
class="col adv-features mt-10 mb-10"
|
|
279
279
|
>
|
|
280
|
-
<hr>
|
|
280
|
+
<hr role="none">
|
|
281
281
|
<h4 v-t="'prefs.confirmationSetting.title'" />
|
|
282
282
|
<Checkbox
|
|
283
283
|
v-model:value="scalingDownPrompt"
|
|
@@ -288,7 +288,7 @@ export default {
|
|
|
288
288
|
</div>
|
|
289
289
|
<!-- Advanced Features -->
|
|
290
290
|
<div class="col adv-features mt-10 mb-10">
|
|
291
|
-
<hr>
|
|
291
|
+
<hr role="none">
|
|
292
292
|
<h4 v-t="'prefs.advFeatures.title'" />
|
|
293
293
|
<Checkbox
|
|
294
294
|
v-model:value="viewInApi"
|
|
@@ -325,13 +325,14 @@ export default {
|
|
|
325
325
|
<Checkbox
|
|
326
326
|
v-model:value="pluginDeveloper"
|
|
327
327
|
:label="t('prefs.advFeatures.pluginDeveloper', {}, true)"
|
|
328
|
+
:tooltip="t('prefs.advFeatures.pluginDeveloperTooltip')"
|
|
328
329
|
class="mt-20"
|
|
329
330
|
/>
|
|
330
331
|
</template>
|
|
331
332
|
</div>
|
|
332
333
|
<!-- YAML editor key mapping -->
|
|
333
334
|
<div class="col mt-10 mb-10">
|
|
334
|
-
<hr>
|
|
335
|
+
<hr role="none">
|
|
335
336
|
<h4 v-t="'prefs.keymap.label'" />
|
|
336
337
|
<ButtonGroup
|
|
337
338
|
v-model:value="keymap"
|
|
@@ -344,7 +345,7 @@ export default {
|
|
|
344
345
|
v-if="!isSingleProduct"
|
|
345
346
|
class="col mt-10 mb-40"
|
|
346
347
|
>
|
|
347
|
-
<hr>
|
|
348
|
+
<hr role="none">
|
|
348
349
|
<h4 v-t="'prefs.helm.label'" />
|
|
349
350
|
<ButtonGroup
|
|
350
351
|
v-model:value="showPreRelease"
|
package/plugins/clean-html.js
CHANGED
|
@@ -2,6 +2,7 @@ import DOMPurify from 'dompurify';
|
|
|
2
2
|
import { uniq } from '@shell/utils/array';
|
|
3
3
|
|
|
4
4
|
const ALLOWED_TAGS = [
|
|
5
|
+
'center',
|
|
5
6
|
'code',
|
|
6
7
|
'li',
|
|
7
8
|
'a',
|
|
@@ -13,6 +14,7 @@ const ALLOWED_TAGS = [
|
|
|
13
14
|
'span',
|
|
14
15
|
'div',
|
|
15
16
|
'i',
|
|
17
|
+
'img',
|
|
16
18
|
'em',
|
|
17
19
|
'strong',
|
|
18
20
|
'h1',
|
|
@@ -175,7 +175,9 @@ describe('dashboard-store: actions', () => {
|
|
|
175
175
|
haveSelector: jest.fn(() => false),
|
|
176
176
|
matching: jest.fn(() => 'getters.all'),
|
|
177
177
|
urlFor: jest.fn(() => 'getters.urlFor'),
|
|
178
|
-
urlOptions: jest.fn(() => 'getters.urlOptions')
|
|
178
|
+
urlOptions: jest.fn(() => 'getters.urlOptions'),
|
|
179
|
+
haveAll: jest.fn(() => false),
|
|
180
|
+
all: jest.fn(() => []),
|
|
179
181
|
};
|
|
180
182
|
const rootGetters = { 'type-map/optionsFor': jest.fn() };
|
|
181
183
|
|
|
@@ -207,6 +209,7 @@ describe('dashboard-store: actions', () => {
|
|
|
207
209
|
null,
|
|
208
210
|
{
|
|
209
211
|
...genericOpt,
|
|
212
|
+
isCollection: true,
|
|
210
213
|
depaginate: undefined,
|
|
211
214
|
labelSelector: genericSelector,
|
|
212
215
|
url: 'getters.urlFor',
|