@rancher/shell 3.0.11 → 3.0.12-rc.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/images/providers/entraid-black.svg +4 -0
- package/assets/images/providers/entraid.svg +9 -0
- package/assets/images/vendor/entraid.svg +9 -0
- package/assets/styles/app.scss +0 -1
- package/assets/styles/base/_mixins.scss +31 -0
- package/assets/styles/base/_variables.scss +2 -0
- package/assets/styles/themes/_modern.scss +6 -5
- package/assets/translations/en-us.yaml +24 -21
- package/assets/translations/zh-hans.yaml +4 -11
- package/chart/__tests__/S3.test.ts +10 -3
- package/components/CountBox.vue +20 -0
- package/components/CreateDriver.vue +0 -12
- package/components/DetailText.vue +12 -3
- package/components/EmptyProductPage.vue +76 -0
- package/components/Resource/Detail/CopyToClipboard.vue +1 -2
- package/components/Resource/Detail/Metadata/KeyValueRow.vue +9 -3
- package/components/Resource/Detail/TitleBar/__tests__/__snapshots__/index.test.ts.snap +31 -0
- package/components/Resource/Detail/TitleBar/__tests__/index.test.ts +45 -1
- package/components/Resource/Detail/TitleBar/index.vue +1 -1
- package/components/Resource/Detail/ViewOptions/__tests__/__snapshots__/index.test.ts.snap +9 -0
- package/components/Resource/Detail/ViewOptions/__tests__/index.test.ts +62 -0
- package/components/Resource/Detail/ViewOptions/index.vue +2 -1
- package/components/ResourceList/Masthead.vue +25 -2
- package/components/SelectIconGrid.vue +5 -0
- package/components/SideNav.vue +13 -0
- package/components/__tests__/CountBox.test.ts +72 -0
- package/components/__tests__/DetailText.test.ts +113 -0
- package/components/__tests__/PromptModal.test.ts +2 -0
- package/components/fleet/FleetClusterTargets/index.vue +18 -1
- package/components/fleet/FleetClusters.vue +1 -0
- package/components/fleet/__tests__/FleetClusters.test.ts +71 -0
- package/components/form/InputWithSelect.vue +18 -10
- package/components/form/KeyValue.vue +17 -1
- package/components/form/LabeledSelect.vue +82 -24
- package/components/form/NodeScheduling.vue +17 -3
- package/components/form/PrivateRegistry.vue +69 -0
- package/components/form/Select.vue +73 -56
- package/components/form/ServiceNameSelect.vue +13 -11
- package/components/form/__tests__/KeyValue.test.ts +66 -0
- package/components/form/__tests__/NodeScheduling.test.ts +9 -0
- package/components/form/__tests__/PrivateRegistry.test.ts +133 -0
- package/components/form/labeled-select-utils/useLabeledSelectPagination.ts +138 -0
- package/components/formatter/WorkloadHealthScale.vue +3 -1
- package/components/nav/Group.vue +33 -9
- package/components/nav/Header.vue +56 -10
- package/components/nav/NotificationCenter/Notification.vue +4 -1
- package/components/nav/NotificationCenter/NotificationHeader.vue +20 -8
- package/components/nav/NotificationCenter/__tests__/NotificationHeader.test.ts +80 -0
- package/components/nav/TopLevelMenu.vue +15 -1
- package/components/nav/Type.vue +8 -7
- package/components/nav/WindowManager/index.vue +2 -1
- package/components/nav/WorkspaceSwitcher.vue +13 -0
- package/components/nav/__tests__/Group.test.ts +67 -0
- package/components/nav/__tests__/Header.test.ts +235 -0
- package/components/nav/__tests__/Type.test.ts +20 -3
- package/components/templates/default.vue +34 -4
- package/components/templates/home.vue +12 -25
- package/components/templates/plain.vue +13 -26
- package/composables/useLabeledFormElement.ts +10 -2
- package/composables/useLabeledSelect.ts +60 -0
- package/composables/useUserRetentionValidation.ts +1 -49
- package/config/cookies.js +0 -1
- package/config/labels-annotations.js +1 -0
- package/config/pagination-table-headers.js +8 -1
- package/config/product/apps.js +2 -1
- package/config/product/auth.js +1 -0
- package/config/product/backup.js +1 -0
- package/config/product/compliance.js +1 -1
- package/config/product/explorer.js +25 -6
- package/config/product/fleet.js +1 -0
- package/config/product/gatekeeper.js +1 -0
- package/config/product/istio.js +1 -0
- package/config/product/logging.js +1 -0
- package/config/product/longhorn.js +2 -1
- package/config/product/manager.js +1 -0
- package/config/product/monitoring.js +1 -0
- package/config/product/navlinks.js +1 -0
- package/config/product/neuvector.js +2 -1
- package/config/product/settings.js +1 -0
- package/config/product/uiplugins.js +1 -0
- package/config/query-params.js +1 -0
- package/config/router/routes.js +0 -8
- package/core/__tests__/plugin-products-helpers.test.ts +454 -0
- package/core/__tests__/plugin-products.test.ts +3810 -0
- package/core/extension-manager-impl.js +30 -1
- package/core/plugin-products-base.ts +392 -0
- package/core/plugin-products-extending.ts +44 -0
- package/core/plugin-products-helpers.ts +263 -0
- package/core/plugin-products-top-level.ts +66 -0
- package/core/plugin-products-type-guards.ts +33 -0
- package/core/plugin-products.ts +50 -0
- package/core/plugin-types.ts +237 -0
- package/core/plugin.ts +45 -10
- package/core/productDebugger.js +48 -0
- package/core/types.ts +97 -11
- package/detail/__tests__/__snapshots__/fleet.cattle.io.bundle.test.ts.snap +52 -0
- package/detail/__tests__/fleet.cattle.io.bundle.test.ts +171 -0
- package/detail/__tests__/management.cattle.io.fleetworkspace.test.ts +128 -0
- package/detail/fleet.cattle.io.bundle.vue +21 -34
- package/detail/management.cattle.io.fleetworkspace.vue +49 -0
- package/dialog/ExtensionCatalogInstallDialog.vue +1 -1
- package/dialog/InstallExtensionDialog.vue +6 -27
- package/dialog/UninstallExistingExtensionDialog.vue +141 -0
- package/dialog/UninstallExtensionDialog.vue +4 -26
- package/dialog/__tests__/UninstallExistingExtensionDialog.test.ts +114 -0
- package/edit/__tests__/fleet.cattle.io.gitrepo.test.ts +1 -0
- package/edit/__tests__/fleet.cattle.io.helmop.test.ts +9 -0
- package/edit/__tests__/kontainerDriver.test.ts +0 -13
- package/edit/__tests__/nodeDriver.test.ts +5 -11
- package/edit/__tests__/resources.cattle.io.restore.test.ts +9 -0
- package/edit/auditlog.cattle.io.auditpolicy/__tests__/__snapshots__/General.test.ts.snap +6 -0
- package/edit/auth/__tests__/oidc.test.ts +54 -0
- package/edit/auth/azuread.vue +1 -1
- package/edit/auth/oidc.vue +8 -0
- package/edit/kontainerDriver.vue +1 -2
- package/edit/nodeDriver.vue +0 -2
- package/edit/provisioning.cattle.io.cluster/AgentEnv.vue +1 -0
- package/edit/provisioning.cattle.io.cluster/__tests__/AgentEnv.test.ts +25 -0
- package/edit/provisioning.cattle.io.cluster/__tests__/Ingress.test.ts +176 -0
- package/edit/provisioning.cattle.io.cluster/index.vue +70 -99
- package/edit/provisioning.cattle.io.cluster/rke2.vue +4 -1
- package/edit/provisioning.cattle.io.cluster/tabs/Basics.vue +6 -0
- package/edit/provisioning.cattle.io.cluster/tabs/Ingress.vue +7 -2
- package/initialize/App.vue +29 -2
- package/initialize/install-plugins.js +0 -2
- package/list/__tests__/management.cattle.io.feature.test.ts +105 -0
- package/list/catalog.cattle.io.app.vue +25 -5
- package/list/management.cattle.io.feature.vue +1 -1
- package/list/management.cattle.io.fleetworkspace.vue +8 -0
- package/list/provisioning.cattle.io.cluster.vue +0 -1
- package/list/workload.vue +11 -4
- package/machine-config/amazonec2.vue +1 -0
- package/mixins/chart.js +40 -9
- package/mixins/resource-fetch.js +12 -3
- package/models/__tests__/catalog.cattle.io.app.test.ts +15 -1
- package/models/__tests__/catalog.cattle.io.clusterrepo.test.ts +84 -0
- package/models/__tests__/chart.test.ts +99 -6
- package/models/__tests__/management.cattle.io.feature.test.ts +131 -0
- package/models/__tests__/monitoring.coreos.com.alertmanagerconfig.test.ts +98 -0
- package/models/catalog.cattle.io.app.js +21 -17
- package/models/catalog.cattle.io.clusterrepo.js +39 -11
- package/models/chart.js +33 -19
- package/models/fleet-application.js +1 -1
- package/models/fleet.cattle.io.bundle.js +1 -1
- package/models/kontainerdriver.js +11 -0
- package/models/management.cattle.io.authconfig.js +5 -1
- package/models/management.cattle.io.cluster.js +0 -53
- package/models/management.cattle.io.feature.js +3 -3
- package/models/management.cattle.io.kontainerdriver.js +1 -26
- package/models/monitoring.coreos.com.alertmanagerconfig.js +31 -17
- package/models/nodedriver.js +7 -0
- package/models/pod.js +18 -0
- package/models/workload.js +20 -2
- package/package.json +13 -13
- package/pages/c/_cluster/apps/charts/AppChartCardFooter.vue +0 -1
- package/pages/c/_cluster/apps/charts/__tests__/chart.test.ts +189 -0
- package/pages/c/_cluster/apps/charts/__tests__/index.test.ts +55 -0
- package/pages/c/_cluster/apps/charts/__tests__/install.test.ts +53 -0
- package/pages/c/_cluster/apps/charts/chart.vue +217 -33
- package/pages/c/_cluster/apps/charts/index.vue +2 -2
- package/pages/c/_cluster/apps/charts/install.vue +8 -3
- package/pages/c/_cluster/auth/user.retention/index.vue +55 -22
- package/pages/c/_cluster/manager/drivers/kontainerDriver/index.vue +5 -7
- package/pages/c/_cluster/settings/brand.vue +4 -4
- package/pages/c/_cluster/uiplugins/PluginInfoPanel.vue +39 -2
- package/pages/c/_cluster/uiplugins/__tests__/PluginInfoPanel.test.ts +61 -0
- package/pages/c/_cluster/uiplugins/__tests__/index.test.ts +246 -23
- package/pages/c/_cluster/uiplugins/index.vue +166 -62
- package/plugins/dashboard-store/__tests__/resource-class.test.ts +1 -0
- package/plugins/dashboard-store/actions.js +3 -2
- package/plugins/dashboard-store/resource-class.js +62 -6
- package/plugins/plugin.js +16 -0
- package/plugins/steve/steve-pagination-utils.ts +7 -0
- package/rancher-components/Form/LabeledInput/LabeledInput.test.ts +205 -1
- package/rancher-components/Form/LabeledInput/LabeledInput.vue +82 -4
- package/rancher-components/Form/ToggleSwitch/ToggleSwitch.vue +1 -1
- package/scripts/test-plugins-build.sh +5 -2
- package/scripts/typegen.sh +13 -1
- package/server/server-middleware.js +2 -2
- package/static/humans.txt +1 -0
- package/static/robots.txt +34 -0
- package/static/welcome-cow.svg +18 -0
- package/store/__tests__/catalog.test.ts +161 -11
- package/store/__tests__/type-map.test.ts +84 -24
- package/store/auth.js +0 -3
- package/store/catalog.js +60 -8
- package/store/type-map.js +42 -3
- package/tsconfig.paths.json +1 -0
- package/types/resources/pod.ts +18 -0
- package/types/shell/index.d.ts +8539 -2938
- package/types/store/dashboard-store.types.ts +5 -0
- package/types/store/pagination.types.ts +6 -0
- package/utils/__tests__/git.test.ts +270 -0
- package/utils/__tests__/inactivity.test.ts +316 -0
- package/utils/__tests__/object.test.ts +77 -0
- package/utils/__tests__/time.test.ts +14 -1
- package/utils/__tests__/url.test.ts +246 -0
- package/utils/axios.js +1 -4
- package/utils/dynamic-importer.js +3 -2
- package/utils/object.js +33 -2
- package/utils/pagination-utils.ts +1 -1
- package/utils/time.ts +5 -0
- package/utils/uiplugins.ts +12 -16
- package/utils/validators/__tests__/private-registry.test.ts +76 -0
- package/utils/validators/private-registry.ts +28 -0
- package/vue.config.js +0 -9
- package/assets/images/providers/azuread-black.svg +0 -22
- package/assets/images/providers/azuread.svg +0 -25
- package/assets/images/vendor/azuread.svg +0 -18
- package/assets/styles/fonts/_dots.scss +0 -18
- package/components/EmberPage.vue +0 -622
- package/components/EmberPageView.vue +0 -39
- package/components/form/labeled-select-utils/labeled-select-pagination.ts +0 -116
- package/mixins/labeled-form-element.ts +0 -225
- package/pages/c/_cluster/explorer/tools/pages/_page.vue +0 -28
- package/pages/c/_cluster/manager/pages/_page.vue +0 -22
- package/pages/c/_cluster/mcapps/pages/_page.vue +0 -22
- package/plugins/ember-cookie.js +0 -17
- package/utils/ember-page.js +0 -30
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<svg id="uuid-224e3580-d59f-48a8-9bb3-c822840f911d" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18">
|
|
3
|
+
<path d="m17.558,9.638L10.436,1.632c-.358-.402-.881-.632-1.435-.632h0c-.554,0-1.078.231-1.435.632L.442,9.638c-.346.389-.5.9-.423,1.403.077.503.379.952.827,1.231l7.123,4.436c.313.195.672.293,1.031.293s.718-.098,1.031-.293l7.123-4.436c.448-.279.75-.728.827-1.231.077-.503-.077-1.014-.423-1.403Zm-8.557,2.564l-3.47-2.161,3.47-3.9,3.47,3.9-3.47,2.161Zm-4.821-1.975l3.995,2.489-1.137.708-.016.01c-.394.25-.854.382-1.33.382-.528,0-1.059-.214-1.38-.413l-2.969-1.849c-.235-.147-.387-.373-.428-.637-.04-.264.037-.521.219-.725L8.257,2.186c.185-.208.456-.327.743-.328.287,0,.558.119.743.328l1.576,1.771c-.009,0-.018,0-.028,0-.856,0-1.668.313-2.278.866l-4.833,5.404Zm12.905.69c-.041.264-.192.49-.428.637l-7.123,4.436c-.325.202-.744.202-1.068,0l-2.192-1.365c.451-.076.88-.238,1.264-.484l6.259-3.898-4.197-4.759c.448-.425,1.053-.667,1.692-.667.335,0,.661.07.97.201l4.605,5.175c.181.204.259.461.219.725Z"/>
|
|
4
|
+
</svg>
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<svg id="uuid-f8d4d392-7c12-4bd9-baff-66fbf7814b91" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18">
|
|
3
|
+
<path d="m3.802,14.032c.388.242,1.033.511,1.715.511.621,0,1.198-.18,1.676-.487,0,0,.001,0,.002-.001l1.805-1.128v4.073c-.286,0-.574-.078-.824-.234l-4.374-2.734Z" fill="#225086"/>
|
|
4
|
+
<path d="m7.853,1.507L.353,9.967c-.579.654-.428,1.642.323,2.111,0,0,2.776,1.735,3.126,1.954.388.242,1.033.511,1.715.511.621,0,1.198-.18,1.676-.487,0,0,.001,0,.002-.001l1.805-1.128-4.364-2.728,4.365-4.924V1s0,0,0,0c-.424,0-.847.169-1.147.507Z" fill="#6df"/>
|
|
5
|
+
<polygon points="4.636 10.199 4.688 10.231 9 12.927 9.001 12.927 9.001 12.927 9.001 5.276 9 5.275 4.636 10.199" fill="#cbf8ff"/>
|
|
6
|
+
<path d="m17.324,12.078c.751-.469.902-1.457.323-2.111l-4.921-5.551c-.397-.185-.842-.291-1.313-.291-.925,0-1.752.399-2.302,1.026l-.109.123h0s4.364,4.924,4.364,4.924h0s0,0,0,0l-4.365,2.728v4.073c.287,0,.573-.078.823-.234l7.5-4.688Z" fill="#074793"/>
|
|
7
|
+
<path d="m9.001,1v4.275s.109-.123.109-.123c.55-.627,1.377-1.026,2.302-1.026.472,0,.916.107,1.313.291l-2.579-2.909c-.299-.338-.723-.507-1.146-.507Z" fill="#0294e4"/>
|
|
8
|
+
<polygon points="13.365 10.199 13.365 10.199 13.365 10.199 9.001 5.276 9.001 12.926 13.365 10.199" fill="#96bcc2"/>
|
|
9
|
+
</svg>
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<svg id="uuid-f8d4d392-7c12-4bd9-baff-66fbf7814b91" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18">
|
|
3
|
+
<path d="m3.802,14.032c.388.242,1.033.511,1.715.511.621,0,1.198-.18,1.676-.487,0,0,.001,0,.002-.001l1.805-1.128v4.073c-.286,0-.574-.078-.824-.234l-4.374-2.734Z" fill="#225086"/>
|
|
4
|
+
<path d="m7.853,1.507L.353,9.967c-.579.654-.428,1.642.323,2.111,0,0,2.776,1.735,3.126,1.954.388.242,1.033.511,1.715.511.621,0,1.198-.18,1.676-.487,0,0,.001,0,.002-.001l1.805-1.128-4.364-2.728,4.365-4.924V1s0,0,0,0c-.424,0-.847.169-1.147.507Z" fill="#6df"/>
|
|
5
|
+
<polygon points="4.636 10.199 4.688 10.231 9 12.927 9.001 12.927 9.001 12.927 9.001 5.276 9 5.275 4.636 10.199" fill="#cbf8ff"/>
|
|
6
|
+
<path d="m17.324,12.078c.751-.469.902-1.457.323-2.111l-4.921-5.551c-.397-.185-.842-.291-1.313-.291-.925,0-1.752.399-2.302,1.026l-.109.123h0s4.364,4.924,4.364,4.924h0s0,0,0,0l-4.365,2.728v4.073c.287,0,.573-.078.823-.234l7.5-4.688Z" fill="#074793"/>
|
|
7
|
+
<path d="m9.001,1v4.275s.109-.123.109-.123c.55-.627,1.377-1.026,2.302-1.026.472,0,.916.107,1.313.291l-2.579-2.909c-.299-.338-.723-.507-1.146-.507Z" fill="#0294e4"/>
|
|
8
|
+
<polygon points="13.365 10.199 13.365 10.199 13.365 10.199 9.001 5.276 9.001 12.926 13.365 10.199" fill="#96bcc2"/>
|
|
9
|
+
</svg>
|
package/assets/styles/app.scss
CHANGED
|
@@ -161,3 +161,34 @@
|
|
|
161
161
|
// we need to use !important because it needs to superseed other classes that might impact outlines
|
|
162
162
|
outline: 2px solid var(--primary-keyboard-focus);
|
|
163
163
|
}
|
|
164
|
+
|
|
165
|
+
// -------------------------------------------------------------------------------------------------
|
|
166
|
+
// Extension dialog styles
|
|
167
|
+
|
|
168
|
+
@mixin extension-dialog {
|
|
169
|
+
padding: 8px 16px 16px 16px;
|
|
170
|
+
|
|
171
|
+
h4 {
|
|
172
|
+
font-weight: bold;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
.dialog-panel {
|
|
176
|
+
display: flex;
|
|
177
|
+
flex-direction: column;
|
|
178
|
+
min-height: 96px;
|
|
179
|
+
|
|
180
|
+
.dialog-info {
|
|
181
|
+
flex: 1;
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
.dialog-buttons {
|
|
186
|
+
display: flex;
|
|
187
|
+
justify-content: flex-end;
|
|
188
|
+
margin-top: 24px;
|
|
189
|
+
|
|
190
|
+
> *:not(:last-child) {
|
|
191
|
+
margin-right: 8px;
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
}
|
|
@@ -74,6 +74,7 @@ $contrasted-light: $lightest !default;
|
|
|
74
74
|
$selected: rgba(#3D98D3, .5);
|
|
75
75
|
|
|
76
76
|
$drag-over: #DCDEE7;
|
|
77
|
+
$body-bg : $lightest;
|
|
77
78
|
|
|
78
79
|
BODY, .theme-light {
|
|
79
80
|
|
|
@@ -418,7 +419,7 @@ BODY, .theme-light {
|
|
|
418
419
|
}
|
|
419
420
|
|
|
420
421
|
|
|
421
|
-
--body-bg : #{$
|
|
422
|
+
--body-bg : #{$body-bg};
|
|
422
423
|
--body-text : #{$darkest};
|
|
423
424
|
--body-text-hover : var(--body-text);
|
|
424
425
|
--scrollbar-thumb : #{$dark};
|
|
@@ -724,8 +725,8 @@ BODY, .theme-light {
|
|
|
724
725
|
--rc-disabled-background: #{$gray001};
|
|
725
726
|
--rc-disabled-text-color: #{$gray004};
|
|
726
727
|
|
|
727
|
-
--rc-section-background-primary: #{$
|
|
728
|
-
--rc-section-background-secondary: #{$
|
|
728
|
+
--rc-section-background-primary: #{$body-bg};
|
|
729
|
+
--rc-section-background-secondary: #{$grey-5};
|
|
729
730
|
--rc-section-action-color: #{$gray009};
|
|
730
731
|
|
|
731
732
|
--rc-image-bg: #{$lightest};
|
|
@@ -1072,8 +1073,8 @@ BODY, .theme-dark {
|
|
|
1072
1073
|
--rc-disabled-background: #{$gray005};
|
|
1073
1074
|
--rc-disabled-text-color: #{$gray004};
|
|
1074
1075
|
|
|
1075
|
-
--rc-section-background-primary: #{$
|
|
1076
|
-
--rc-section-background-secondary: #{$
|
|
1076
|
+
--rc-section-background-primary: #{$body-bg};
|
|
1077
|
+
--rc-section-background-secondary: #{$darkest};
|
|
1077
1078
|
--rc-section-action-color: #{$gray010};
|
|
1078
1079
|
|
|
1079
1080
|
--rc-image-bg: #{$lightest};
|
|
@@ -132,6 +132,7 @@ generic:
|
|
|
132
132
|
deprecated: Deprecated
|
|
133
133
|
upgradeable: Upgradeable
|
|
134
134
|
installed: Installed
|
|
135
|
+
installedMultiple: Installed (multiple)
|
|
135
136
|
featured: Featured
|
|
136
137
|
shortFeatured: Feat
|
|
137
138
|
category: Category
|
|
@@ -184,6 +185,7 @@ locale:
|
|
|
184
185
|
none: (None)
|
|
185
186
|
|
|
186
187
|
nav:
|
|
188
|
+
skipToContent: Skip to main content
|
|
187
189
|
ariaLabel:
|
|
188
190
|
clusterIconKeyCombo: Cluster keyboard shortcut combination icon
|
|
189
191
|
localClusterIcon: Local Cluster icon
|
|
@@ -712,7 +714,7 @@ authConfig:
|
|
|
712
714
|
azuread:
|
|
713
715
|
tenantId:
|
|
714
716
|
label: Tenant ID
|
|
715
|
-
tooltip: From the
|
|
717
|
+
tooltip: From the Microsoft Entra admin center
|
|
716
718
|
placeholder: A long UUID string
|
|
717
719
|
applicationId:
|
|
718
720
|
label: Application ID
|
|
@@ -739,17 +741,17 @@ authConfig:
|
|
|
739
741
|
externalHelp: See the OData filter expression documentation for more information.
|
|
740
742
|
externalHelpLink: https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/webservices/use-filter-expressions-in-odata-uris#filter-expressions
|
|
741
743
|
reply:
|
|
742
|
-
info: '
|
|
744
|
+
info: 'Microsoft Entra ID requires a whitelisted URL for your Rancher server before beginning this setup. Please ensure that the following URL is set in the Reply URL section of your Microsoft Entra admin center. Please note that it may take up to 5 minutes for the whitelisted URL to propagate.'
|
|
743
745
|
label: Reply URL
|
|
744
746
|
ariaLabel: Copy Reply URL to clipboard
|
|
745
747
|
updateEndpoint:
|
|
746
748
|
button: Update Endpoint
|
|
747
749
|
banner:
|
|
748
|
-
message: '
|
|
750
|
+
message: 'Microsoft Entra ID Authentication must be updated: it is using the Azure AD Graph API, which was deprecated at the end of 2022.'
|
|
749
751
|
linkText: 'Update it here.'
|
|
750
752
|
modal:
|
|
751
753
|
title: Are you sure? This update is irreversible.
|
|
752
|
-
body: '<p><b>You may need to make some additional changes</b>. Please ensure the
|
|
754
|
+
body: '<p><b>You may need to make some additional changes</b>. Please ensure the Microsoft Entra ID app has the Directory.Read.All <b>Application</b> permission added to Microsoft Graph.<br> If any endpoints were customized while configuring Microsoft Entra ID authentication in Rancher, they will not be automatically updated. </p>'
|
|
753
755
|
oidc:
|
|
754
756
|
endSessionEndpoint:
|
|
755
757
|
title: End Session Endpoint
|
|
@@ -806,6 +808,9 @@ authConfig:
|
|
|
806
808
|
groupSearch:
|
|
807
809
|
label: Enable group search
|
|
808
810
|
tooltip: Allows users with appropriate permissions to search and view all groups within the OIDC provider's realm. This can be useful for administrators who need to assign global roles to groups that they are not currently a member of.
|
|
811
|
+
clientAuthenticatedSearch:
|
|
812
|
+
label: Enable client authenticated search
|
|
813
|
+
tooltip: Use the OIDC Client Credentials to authenticate to Keycloak when searching for users or groups. This will bypass user-based RBAC within the realm
|
|
809
814
|
stateBanner:
|
|
810
815
|
disabled: 'The {provider} authentication provider is currently disabled.'
|
|
811
816
|
enabled: 'The {provider} authentication provider is currently enabled.'
|
|
@@ -1138,7 +1143,6 @@ catalog:
|
|
|
1138
1143
|
label: Chart Versions
|
|
1139
1144
|
showMore: Show More
|
|
1140
1145
|
showLess: Show Less
|
|
1141
|
-
missingVersionDate: No date available for this chart version
|
|
1142
1146
|
home: Homepage
|
|
1143
1147
|
repository: Repository Page
|
|
1144
1148
|
maintainers: Maintainers
|
|
@@ -1152,12 +1156,15 @@ catalog:
|
|
|
1152
1156
|
deprecatedWarning: '{chartName} has been marked as deprecated. Use caution when installing this helm chart as it might be removed in the future.'
|
|
1153
1157
|
experimentalWarning: '{chartName} has been marked as experimental. Use caution when installing this helm chart as it might not function as expected.'
|
|
1154
1158
|
deprecatedAndExperimentalWarning: '{chartName} has been marked as deprecated and experimental. Use caution when installing this helm chart as it might be removed in the future and might not function as expected.'
|
|
1159
|
+
installedAppsSelector:
|
|
1160
|
+
ariaLabel: Select installed app instance
|
|
1155
1161
|
chartButton:
|
|
1156
1162
|
action:
|
|
1157
1163
|
install: Install this version
|
|
1158
1164
|
edit: Edit the current version
|
|
1159
1165
|
upgrade: Upgrade to this version
|
|
1160
1166
|
downgrade: Downgrade to this version
|
|
1167
|
+
installNew: Install as a new instance
|
|
1161
1168
|
charts:
|
|
1162
1169
|
browseAriaLabel: Show only charts grid
|
|
1163
1170
|
iconAlt: Icon for {app} card/grid item
|
|
@@ -1183,15 +1190,11 @@ catalog:
|
|
|
1183
1190
|
all: All Operating Systems
|
|
1184
1191
|
linux: Linux
|
|
1185
1192
|
windows: Windows
|
|
1186
|
-
search: Search the
|
|
1187
|
-
deprecatedChartsFilter:
|
|
1188
|
-
label: Show deprecated apps
|
|
1193
|
+
search: Search the catalog...
|
|
1189
1194
|
addNewRepo:
|
|
1190
1195
|
label: Add new
|
|
1191
1196
|
ariaLabel: Add a new repository
|
|
1192
1197
|
appChartCard:
|
|
1193
|
-
subHeaderItem:
|
|
1194
|
-
missingVersionDate: Last updated date is not available for this chart
|
|
1195
1198
|
footerItem:
|
|
1196
1199
|
ariaLabel: 'Apply {filter} filter'
|
|
1197
1200
|
statusFilterCautions:
|
|
@@ -1435,6 +1438,8 @@ catalog:
|
|
|
1435
1438
|
refreshInterval:
|
|
1436
1439
|
label: Refresh Interval
|
|
1437
1440
|
placeholder: 'default: {hours}'
|
|
1441
|
+
error:
|
|
1442
|
+
refresh: Error refreshing repository
|
|
1438
1443
|
tools:
|
|
1439
1444
|
iconAlt: Icon for {app} Cluster Tool
|
|
1440
1445
|
header: Cluster Tools
|
|
@@ -2836,8 +2841,8 @@ providers:
|
|
|
2836
2841
|
drivers:
|
|
2837
2842
|
kontainer:
|
|
2838
2843
|
title: Cluster Drivers
|
|
2839
|
-
|
|
2840
|
-
|
|
2844
|
+
emberRemovalMessage: 'Support for UI Plugins (based on Ember) for cluster and node drivers was deprecated in Rancher 2.11.0 and has been removed in 2.15.0. If you still need one of these plugins, it will need to be migrated to the new <a href="https://extensions.rancher.io/extensions/next/provisioning/hosted-provider/overview" target="_blank" rel="noopener noreferrer nofollow">UI Extensions framework</a>.'
|
|
2845
|
+
emberRemovalTooltip: 'Support for UI Plugins (based on Ember) for cluster and node drivers was deprecated in Rancher 2.11.0 and has been removed in 2.15.0. If you still need this plugin, it will need to be migrated to the new UI Extensions framework.'
|
|
2841
2846
|
node:
|
|
2842
2847
|
title: Node Drivers
|
|
2843
2848
|
add:
|
|
@@ -2989,7 +2994,7 @@ fleet:
|
|
|
2989
2994
|
add: Add Selector
|
|
2990
2995
|
tolerations:
|
|
2991
2996
|
label: Tolerations
|
|
2992
|
-
description: "List of node taints to tolerate
|
|
2997
|
+
description: "List of node taints to tolerate."
|
|
2993
2998
|
add: Add Toleration
|
|
2994
2999
|
priorityClassName:
|
|
2995
3000
|
label: Priority Class Name
|
|
@@ -5446,6 +5451,7 @@ inactivity:
|
|
|
5446
5451
|
# Rancher Extensions
|
|
5447
5452
|
plugins:
|
|
5448
5453
|
altIcon: Icon for {extension} extension card
|
|
5454
|
+
deprecatedExtension: This extension is deprecated and may soon be removed from the catalog.
|
|
5449
5455
|
incompatiblePrimeOnly: "The latest version of this extension ({ version }) needs Rancher Prime in order to be installed."
|
|
5450
5456
|
incompatibleRancherVersion: "The latest version of this extension ({ version }) is not compatible with the current Rancher version ({ required })."
|
|
5451
5457
|
incompatibleKubeVersion: "The latest version of this extension ({ version }) is not compatible with the current Kube version ({ required })."
|
|
@@ -5578,6 +5584,9 @@ plugins:
|
|
|
5578
5584
|
prompt: "Are you sure that you want to install this extension?"
|
|
5579
5585
|
version: Version
|
|
5580
5586
|
warnNotCertified: Please ensure that you are aware of the risks of installing Extensions from untrusted authors
|
|
5587
|
+
alreadyInstalledTitle: This extension is already installed from another source
|
|
5588
|
+
alreadyInstalledPrompt: To install it from this source, you need to uninstall the existing version first and reload the page (required). Would you like to continue?
|
|
5589
|
+
uninstallExisting: Uninstall existing version
|
|
5581
5590
|
upgrade:
|
|
5582
5591
|
label: Upgrade
|
|
5583
5592
|
title: Upgrade extension {name}
|
|
@@ -6988,6 +6997,7 @@ tableHeaders:
|
|
|
6988
6997
|
progress: Progress
|
|
6989
6998
|
podImages: Image
|
|
6990
6999
|
podRestarts: Restarts
|
|
7000
|
+
podLastRestart: Last Restart
|
|
6991
7001
|
pods: Pods
|
|
6992
7002
|
pod-Selector: Pod-Selector
|
|
6993
7003
|
providers: Providers
|
|
@@ -7971,7 +7981,7 @@ model:
|
|
|
7971
7981
|
local: Local
|
|
7972
7982
|
multiple: Multiple
|
|
7973
7983
|
activedirectory: ActiveDirectory
|
|
7974
|
-
azuread:
|
|
7984
|
+
azuread: Microsoft Entra ID
|
|
7975
7985
|
github: GitHub
|
|
7976
7986
|
githubapp: GitHub App
|
|
7977
7987
|
keycloak: Keycloak
|
|
@@ -8045,10 +8055,7 @@ typeDescription:
|
|
|
8045
8055
|
monitoring.coreos.com.prometheus: A Prometheus server is a Prometheus deployment whose scrape configuration and rules are determined by selected ServiceMonitors, PodMonitors, and PrometheusRules and whose alerts will be sent to all selected Alertmanagers with the custom resource's configuration.
|
|
8046
8056
|
monitoring.coreos.com.alertmanager: An alert manager is deployment whose configuration will be specified by a secret in the same namespace, which determines which alerts should go to which receiver.
|
|
8047
8057
|
node: The base Kubernetes Node resource represents a virtual or physical machine which hosts deployments. To manage the machine lifecycle, if available, go to Cluster Management.
|
|
8048
|
-
catalog.cattle.io.clusterrepo: 'A chart repository is a Helm repository or {vendor} git based application catalog. It provides the list of available charts in the cluster.'
|
|
8049
|
-
catalog.cattle.io.clusterrepo.local: ' A chart repository is a Helm repository or {vendor} git based application catalog. It provides the list of available charts in the cluster. Cluster Templates are deployed via Helm charts.'
|
|
8050
8058
|
catalog.cattle.io.operation: An operation is the list of recent Helm operations that have been applied to the cluster.
|
|
8051
|
-
catalog.cattle.io.app: An installed application is a Helm 3 chart that was installed either via our charts or through the Helm CLI.
|
|
8052
8059
|
logging.banzaicloud.io.clusterflow: Logs from the cluster will be collected and logged to the selected Cluster Output.
|
|
8053
8060
|
logging.banzaicloud.io.clusteroutput: A cluster output defines which logging providers that logs can be sent to and is only effective when deployed in the namespace that the logging operator is in.
|
|
8054
8061
|
logging.banzaicloud.io.flow: A flow defines which logs to collect and filter as well as which output to send the logs. The flow is a namespaced resource, which means logs will only be collected from the namespace that the flow is deployed in.
|
|
@@ -9173,10 +9180,6 @@ support:
|
|
|
9173
9180
|
title: Innovate with Freedom
|
|
9174
9181
|
text: Take advantage of our certified compatibility with a wide range of Kubernetes providers, operating systems, and open source software.
|
|
9175
9182
|
|
|
9176
|
-
embedding:
|
|
9177
|
-
retry: Retry
|
|
9178
|
-
unavailable: Cluster Manager UI is not available
|
|
9179
|
-
|
|
9180
9183
|
serverUpgrade:
|
|
9181
9184
|
title: "{vendor} Server Changed"
|
|
9182
9185
|
message: "The page reloaded because the version of {vendor} running on your server changed."
|
|
@@ -531,16 +531,16 @@ authConfig:
|
|
|
531
531
|
tokenEndpoint: Token 端点
|
|
532
532
|
authEndpoint: Auth 端点
|
|
533
533
|
reply:
|
|
534
|
-
info: '在开始设置之前,
|
|
534
|
+
info: '在开始设置之前,Microsoft Entra ID 需要 Rancher Server 的白名单 URL。请确保在 Microsoft Entra 管理中心的回复 URL 中设置了以下 URL。请注意,白名单 URL 可能需要 5 分钟才能生效。'
|
|
535
535
|
label: 回复 URL
|
|
536
536
|
updateEndpoint:
|
|
537
537
|
button: 更新端点
|
|
538
538
|
banner:
|
|
539
|
-
message: '必须更新
|
|
539
|
+
message: '必须更新 Microsoft Entra ID 身份认证:它使用了 Azure AD Graph API,该 API 已于 2022 年底弃用。'
|
|
540
540
|
linkText: '在此处进行更新。'
|
|
541
541
|
modal:
|
|
542
542
|
title: 是否确认?此更新是不可逆的。
|
|
543
|
-
body: '<p><b>你可能需要进行额外的更改</b>。请确保
|
|
543
|
+
body: '<p><b>你可能需要进行额外的更改</b>。请确保 Microsoft Entra ID 应用已将 Directory.Read.All <b>Application</b> 权限添加到 Microsoft Graph。<br> 如果在 Rancher 中配置 Microsoft Entra ID 身份认证时自定义了端点,这些端点将不会自动更新。</p>'
|
|
544
544
|
oidc:
|
|
545
545
|
oidc: 配置 OIDC 账号
|
|
546
546
|
keycloakoidc: 配置 Keycloak OIDC 账号
|
|
@@ -6269,7 +6269,7 @@ model:
|
|
|
6269
6269
|
local: 本地
|
|
6270
6270
|
multiple: Multiple
|
|
6271
6271
|
activedirectory: Active Directory
|
|
6272
|
-
azuread:
|
|
6272
|
+
azuread: Microsoft Entra ID
|
|
6273
6273
|
github: GitHub
|
|
6274
6274
|
keycloak: Keycloak
|
|
6275
6275
|
ldap: LDAP
|
|
@@ -6339,10 +6339,7 @@ typeDescription:
|
|
|
6339
6339
|
monitoring.coreos.com.prometheus: Prometheus server 是一个 Prometheus deployment,其抓取的配置和规则由选定的 ServiceMonitor、PodMonitor 和 PrometheusRule 决定。它将其告警信息发送给所有选择的具有定制资源配置的 AlertManager。
|
|
6340
6340
|
monitoring.coreos.com.alertmanager: Alertmanager 是一个 deployment。其配置由同一命名空间中的密文指定,该密文决定了告警的接收器。
|
|
6341
6341
|
node: Kubernetes 节点资源展示了承载 Deployment 的虚拟机或物理机。请进入"集群管理"页面管理可用节点的生命周期。
|
|
6342
|
-
catalog.cattle.io.clusterrepo: 'Chart 仓库是一个 Helm 仓库或 {vendor} 基于 Git 的应用商店。此处列出了集群中可用的 Chart。'
|
|
6343
|
-
catalog.cattle.io.clusterrepo.local: ' Chart 仓库是一个 Helm 仓库或 {vendor} 基于 Git 的应用商店。此处列出了集群中可用的 Chart。集群模板是通过 Helm Chart 部署的。'
|
|
6344
6342
|
catalog.cattle.io.operation: 最近的操作指的是最近应用于集群的一系列 Helm 操作。
|
|
6345
|
-
catalog.cattle.io.app: 已安装的应用指的是通过我们的 Chart 或 Helm CLI 安装的 Helm 3 Chart。
|
|
6346
6343
|
logging.banzaicloud.io.clusterflow: 集群日志将被收集并投递到选定的 ClusterOutput 中。
|
|
6347
6344
|
logging.banzaicloud.io.clusteroutput: ClusterOutput 定义了日志可以发送到哪些日志提供程序。只有部署在 Logging operator 所在的命名空间中时,ClusterOutput 才生效。
|
|
6348
6345
|
logging.banzaicloud.io.flow: Flow 定义了要收集和过滤的日志,以及日志的输出目标。Flow 是一个命名空间资源。换言之,只有部署了该 Flow 的命名空间日志才能被该 Flow 收集。
|
|
@@ -7310,10 +7307,6 @@ support:
|
|
|
7310
7307
|
title: 自由创新
|
|
7311
7308
|
text: 基于我们与众多 Kubernetes 供应商、操作系统和开源软件认证的兼容性,实现自主创新。
|
|
7312
7309
|
|
|
7313
|
-
embedding:
|
|
7314
|
-
retry: 重试
|
|
7315
|
-
unavailable: Cluster Manager UI 不可用
|
|
7316
|
-
|
|
7317
7310
|
legacy:
|
|
7318
7311
|
alerts: 告警
|
|
7319
7312
|
apps: 应用
|
|
@@ -3,7 +3,7 @@ import { nextTick } from 'vue';
|
|
|
3
3
|
import { mount } from '@vue/test-utils';
|
|
4
4
|
|
|
5
5
|
import S3 from '@shell/chart/rancher-backup/S3';
|
|
6
|
-
import
|
|
6
|
+
import { createStore } from 'vuex';
|
|
7
7
|
|
|
8
8
|
describe('rancher-backup: S3', () => {
|
|
9
9
|
const mockStore = {
|
|
@@ -16,8 +16,15 @@ describe('rancher-backup: S3', () => {
|
|
|
16
16
|
}
|
|
17
17
|
};
|
|
18
18
|
const wrapper = mount(S3, {
|
|
19
|
-
|
|
20
|
-
|
|
19
|
+
global: { mocks: { $store: mockStore, $fetchState: { pending: false } } },
|
|
20
|
+
provide: {
|
|
21
|
+
store: createStore({
|
|
22
|
+
getters: {
|
|
23
|
+
'cluster/paginationEnabled': () => () => false,
|
|
24
|
+
currentStore: () => 'cluster'
|
|
25
|
+
}
|
|
26
|
+
})
|
|
27
|
+
},
|
|
21
28
|
});
|
|
22
29
|
|
|
23
30
|
it('should emit invalid when form is not filled', () => {
|
package/components/CountBox.vue
CHANGED
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
export default {
|
|
4
4
|
name: 'CountBox',
|
|
5
5
|
|
|
6
|
+
emits: ['click'],
|
|
7
|
+
|
|
6
8
|
props: {
|
|
7
9
|
name: {
|
|
8
10
|
type: String,
|
|
@@ -19,6 +21,10 @@ export default {
|
|
|
19
21
|
compact: {
|
|
20
22
|
type: Boolean,
|
|
21
23
|
default: false
|
|
24
|
+
},
|
|
25
|
+
clickable: {
|
|
26
|
+
type: Boolean,
|
|
27
|
+
default: false
|
|
22
28
|
}
|
|
23
29
|
},
|
|
24
30
|
computed: {
|
|
@@ -34,6 +40,12 @@ export default {
|
|
|
34
40
|
methods: {
|
|
35
41
|
customizePrimaryColorOpacity(opacity) {
|
|
36
42
|
return `rgba(var(${ this.primaryColorVar }), ${ opacity })`;
|
|
43
|
+
},
|
|
44
|
+
|
|
45
|
+
handleClick() {
|
|
46
|
+
if (this.clickable) {
|
|
47
|
+
this.$emit('click');
|
|
48
|
+
}
|
|
37
49
|
}
|
|
38
50
|
}
|
|
39
51
|
};
|
|
@@ -42,7 +54,9 @@ export default {
|
|
|
42
54
|
<template>
|
|
43
55
|
<div
|
|
44
56
|
class="count-container"
|
|
57
|
+
:class="{ 'clickable': clickable }"
|
|
45
58
|
:style="sideStyle"
|
|
59
|
+
@click="handleClick"
|
|
46
60
|
>
|
|
47
61
|
<div
|
|
48
62
|
class="count"
|
|
@@ -61,6 +75,12 @@ export default {
|
|
|
61
75
|
</template>
|
|
62
76
|
|
|
63
77
|
<style lang="scss" scoped>
|
|
78
|
+
.count-container {
|
|
79
|
+
&.clickable {
|
|
80
|
+
cursor: pointer;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
|
|
64
84
|
.count {
|
|
65
85
|
$padding: 10px;
|
|
66
86
|
|
|
@@ -22,7 +22,6 @@ export default {
|
|
|
22
22
|
rules: {
|
|
23
23
|
default: () => ({
|
|
24
24
|
url: [],
|
|
25
|
-
uiUrl: [],
|
|
26
25
|
checksum: [],
|
|
27
26
|
whitelistDomains: []
|
|
28
27
|
}),
|
|
@@ -56,17 +55,6 @@ export default {
|
|
|
56
55
|
:data-testid="'driver-create-checksum-field'"
|
|
57
56
|
/>
|
|
58
57
|
</div>
|
|
59
|
-
<div class="row mb-20">
|
|
60
|
-
<LabeledInput
|
|
61
|
-
v-model:value.trim="value.uiUrl"
|
|
62
|
-
:label="t('drivers.add.customUiUrl.label')"
|
|
63
|
-
:tooltip="t('drivers.add.customUiUrl.tooltip', null, true)"
|
|
64
|
-
:placeholder="t('drivers.add.customUiUrl.placeholder', null, true)"
|
|
65
|
-
:mode="mode"
|
|
66
|
-
:rules="rules.uiUrl"
|
|
67
|
-
:data-testid="'driver-create-uiurl-field'"
|
|
68
|
-
/>
|
|
69
|
-
</div>
|
|
70
58
|
<div class="col span-6">
|
|
71
59
|
<ArrayList
|
|
72
60
|
v-model:value="value.whitelistDomains"
|
|
@@ -187,10 +187,9 @@ export default {
|
|
|
187
187
|
>{{ body }}</span>
|
|
188
188
|
|
|
189
189
|
<CodeMirror
|
|
190
|
-
v-else-if="jsonStr"
|
|
190
|
+
v-else-if="jsonStr && !concealed"
|
|
191
191
|
:options="{mode:{name:'javascript', json:true}, lineNumbers:false, foldGutter:false, readOnly:true}"
|
|
192
192
|
:value="jsonStr"
|
|
193
|
-
:class="{'conceal': concealed}"
|
|
194
193
|
aria-live="polite"
|
|
195
194
|
/>
|
|
196
195
|
|
|
@@ -199,9 +198,16 @@ export default {
|
|
|
199
198
|
:class="{'conceal-wrapper': concealed}"
|
|
200
199
|
>
|
|
201
200
|
<span
|
|
201
|
+
v-if="concealed"
|
|
202
|
+
data-testid="detail-top_html"
|
|
203
|
+
class="conceal"
|
|
204
|
+
aria-live="polite"
|
|
205
|
+
/>
|
|
206
|
+
<span
|
|
207
|
+
v-else
|
|
202
208
|
v-clean-html="bodyHtml"
|
|
203
209
|
data-testid="detail-top_html"
|
|
204
|
-
:class="{'
|
|
210
|
+
:class="{'monospace': monospace && !isBinary}"
|
|
205
211
|
aria-live="polite"
|
|
206
212
|
/>
|
|
207
213
|
</div>
|
|
@@ -270,6 +276,9 @@ export default {
|
|
|
270
276
|
.conceal {
|
|
271
277
|
white-space: nowrap;
|
|
272
278
|
display: block;
|
|
279
|
+
&::before {
|
|
280
|
+
content: '••••••••••••••••••••••••';
|
|
281
|
+
}
|
|
273
282
|
}
|
|
274
283
|
|
|
275
284
|
.action-group {
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
<script>
|
|
2
|
+
export default {
|
|
3
|
+
name: 'EmptyProductPage',
|
|
4
|
+
layout: 'plain',
|
|
5
|
+
data() {
|
|
6
|
+
const err = this.$route.meta?.pageError;
|
|
7
|
+
|
|
8
|
+
let msg;
|
|
9
|
+
|
|
10
|
+
switch (err) {
|
|
11
|
+
case 'no-nav':
|
|
12
|
+
msg = [
|
|
13
|
+
'When a component is not provided for a product, the layout with side navigation is used',
|
|
14
|
+
'No child items were specified, so this "Default" empty view has been added',
|
|
15
|
+
'Please add child items to this product'
|
|
16
|
+
];
|
|
17
|
+
break;
|
|
18
|
+
default:
|
|
19
|
+
msg = ['No component defined for this extension product... Define a component or child pages so it can be rendered here.'];
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
return {
|
|
23
|
+
img: require('~shell/assets/images/generic-plugin.svg'),
|
|
24
|
+
msg,
|
|
25
|
+
};
|
|
26
|
+
},
|
|
27
|
+
};
|
|
28
|
+
</script>
|
|
29
|
+
|
|
30
|
+
<template>
|
|
31
|
+
<div class="empty-product-page">
|
|
32
|
+
<img
|
|
33
|
+
:src="img"
|
|
34
|
+
alt="Extension Product Error"
|
|
35
|
+
>
|
|
36
|
+
<div class="err-messages">
|
|
37
|
+
<p
|
|
38
|
+
v-for="(m, index) in msg"
|
|
39
|
+
:key="index"
|
|
40
|
+
>
|
|
41
|
+
{{ m }}
|
|
42
|
+
</p>
|
|
43
|
+
</div>
|
|
44
|
+
</div>
|
|
45
|
+
</template>
|
|
46
|
+
|
|
47
|
+
<style lang="scss" scoped>
|
|
48
|
+
.empty-product-page {
|
|
49
|
+
align-items: center;
|
|
50
|
+
display: flex;
|
|
51
|
+
justify-content: center;
|
|
52
|
+
opacity: 0.75;
|
|
53
|
+
|
|
54
|
+
> img {
|
|
55
|
+
width: 128px;
|
|
56
|
+
margin-bottom: 20px;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
.err-messages {
|
|
60
|
+
display: flex;
|
|
61
|
+
align-items: center;
|
|
62
|
+
text-align: center;
|
|
63
|
+
flex-direction: column;
|
|
64
|
+
|
|
65
|
+
> * {
|
|
66
|
+
margin-bottom: 8px;
|
|
67
|
+
font-size: 16px;
|
|
68
|
+
|
|
69
|
+
&:last-child {
|
|
70
|
+
font-weight: bold;
|
|
71
|
+
color: var(--error);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
</style>
|
|
@@ -70,8 +70,7 @@ const onClick = (ev: MouseEvent) => {
|
|
|
70
70
|
border-color: var(--success-border);
|
|
71
71
|
color: var(--success-text);
|
|
72
72
|
|
|
73
|
-
transition:
|
|
74
|
-
transition-timing-function: ease;
|
|
73
|
+
transition: background-color 0.25s ease, border-color 0.25s ease, color 0.25s ease;
|
|
75
74
|
}
|
|
76
75
|
|
|
77
76
|
&:focus-visible {
|
|
@@ -77,12 +77,15 @@ const previewId = randomStr();
|
|
|
77
77
|
position: relative;
|
|
78
78
|
padding: 0;
|
|
79
79
|
|
|
80
|
+
$topShift: -6px;
|
|
81
|
+
$topShiftHidden: -100vh; //100% of the viewport
|
|
82
|
+
|
|
80
83
|
.copy-to-clipboard {
|
|
81
84
|
position: fixed;
|
|
82
85
|
|
|
83
86
|
right: -20px;
|
|
84
|
-
top:
|
|
85
|
-
z-index:
|
|
87
|
+
top: $topShiftHidden;
|
|
88
|
+
z-index: z-index('copyToClipboard');
|
|
86
89
|
}
|
|
87
90
|
|
|
88
91
|
&, .btn, .rc-tag {
|
|
@@ -126,13 +129,16 @@ const previewId = randomStr();
|
|
|
126
129
|
}
|
|
127
130
|
|
|
128
131
|
& + .copy-to-clipboard {
|
|
132
|
+
// This is how we "hide" the component but still allow it to be visible to accessibility (tab focus)
|
|
129
133
|
position: absolute;
|
|
134
|
+
top: $topShift;
|
|
130
135
|
}
|
|
131
136
|
}
|
|
132
137
|
|
|
133
138
|
.copy-to-clipboard:focus-visible, .copy-to-clipboard:hover {
|
|
139
|
+
// This is how we "hide" the component but still allow it to be visible to accessibility (tab focus)
|
|
134
140
|
position: absolute;
|
|
135
|
-
|
|
141
|
+
top: $topShift;
|
|
136
142
|
}
|
|
137
143
|
|
|
138
144
|
.btn:has(+ .copy-to-clipboard:focus-visible), .btn:has(+ .copy-to-clipboard:hover) {
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
2
|
+
|
|
3
|
+
exports[`component: TitleBar/index should match the full component snapshot 1`] = `
|
|
4
|
+
<div class="title-bar">
|
|
5
|
+
<div class="top">
|
|
6
|
+
<h1 class="title">
|
|
7
|
+
<!----><a class="resource-link">RESOURCE_TYPE_LABEL: </a><span class="resource-name masthead-resource-title">RESOURCE_NAME</span><span class="badge-state bg-success badge-state"><!--v-if--><span class="msg">Active</span></span>
|
|
8
|
+
</h1>
|
|
9
|
+
<div class="actions"><button role="button" class="rc-button btn variant-primary btn-medium">
|
|
10
|
+
<!--v-if-->Deploy
|
|
11
|
+
<!--v-if-->
|
|
12
|
+
</button><button role="button" class="rc-button btn variant-secondary btn-large">
|
|
13
|
+
<!--v-if-->Rollback
|
|
14
|
+
<!--v-if-->
|
|
15
|
+
</button><button role="button" class="rc-button btn variant-primary btn-large show-configuration" data-testid="show-configuration-cta" aria-label="component.resource.detail.titleBar.ariaLabel.showConfiguration-{"resource":"RESOURCE_NAME"}">
|
|
16
|
+
<!--v-if--><i class="icon icon-document" aria-hidden="true"></i> component.resource.detail.titleBar.showConfiguration
|
|
17
|
+
<!--v-if-->
|
|
18
|
+
</button>
|
|
19
|
+
<div class="v-popper v-popper--theme-dropdown"><button role="button" class="rc-button btn variant-multi-action btn-medium" aria-haspopup="menu" aria-expanded="false" data-testid="masthead-action-menu" aria-label="component.resource.detail.titleBar.ariaLabel.actionMenu-{"resource":"RESOURCE_NAME"}">
|
|
20
|
+
<!--v-if--><i class="icon icon-actions"></i>
|
|
21
|
+
<!--v-if-->
|
|
22
|
+
</button></div>
|
|
23
|
+
<div class="popperContainer">
|
|
24
|
+
<!--Empty container for mounting popper content-->
|
|
25
|
+
</div>
|
|
26
|
+
</div>
|
|
27
|
+
</div>
|
|
28
|
+
<div class="bottom description text-deemphasized">A test description</div>
|
|
29
|
+
<!--v-if-->
|
|
30
|
+
</div>
|
|
31
|
+
`;
|