@rancher/shell 3.0.6 → 3.0.7
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/pl/dark/rancher-logo.svg +131 -44
- package/assets/images/pl/rancher-logo.svg +120 -44
- package/assets/styles/base/_basic.scss +2 -2
- package/assets/styles/base/_color-classic.scss +51 -0
- package/assets/styles/base/_color.scss +3 -3
- package/assets/styles/base/_mixins.scss +1 -1
- package/assets/styles/base/_variables-classic.scss +47 -0
- package/assets/styles/global/_button.scss +49 -17
- package/assets/styles/global/_form.scss +1 -1
- package/assets/styles/themes/_dark.scss +4 -0
- package/assets/styles/themes/_light.scss +3 -69
- package/assets/styles/themes/_modern.scss +194 -50
- package/assets/styles/vendor/vue-select.scss +1 -2
- package/assets/translations/en-us.yaml +33 -21
- package/components/ClusterIconMenu.vue +1 -1
- package/components/ClusterProviderIcon.vue +1 -1
- package/components/CodeMirror.vue +1 -1
- package/components/IconOrSvg.vue +40 -29
- package/components/ResourceDetail/index.vue +1 -0
- package/components/SortableTable/sorting.js +3 -1
- package/components/Tabbed/index.vue +5 -5
- package/components/form/ResourceTabs/index.vue +37 -18
- package/components/form/SecretSelector.vue +6 -2
- package/components/nav/Group.vue +29 -9
- package/components/nav/Header.vue +6 -8
- package/components/nav/NamespaceFilter.vue +1 -1
- package/components/nav/TopLevelMenu.helper.ts +47 -20
- package/components/nav/TopLevelMenu.vue +44 -14
- package/components/nav/Type.vue +0 -5
- package/components/nav/__tests__/TopLevelMenu.test.ts +2 -0
- package/config/pagination-table-headers.js +10 -2
- package/config/product/explorer.js +4 -3
- package/config/table-headers.js +9 -0
- package/core/plugin.ts +18 -6
- package/core/types.ts +8 -0
- package/detail/provisioning.cattle.io.cluster.vue +1 -0
- package/dialog/InstallExtensionDialog.vue +71 -45
- package/dialog/UninstallExtensionDialog.vue +2 -1
- package/dialog/__tests__/InstallExtensionDialog.test.ts +111 -0
- package/edit/auth/oidc.vue +86 -16
- package/mixins/__tests__/chart.test.ts +1 -1
- package/mixins/chart.js +1 -1
- package/models/event.js +7 -0
- package/models/provisioning.cattle.io.cluster.js +9 -0
- package/package.json +1 -1
- package/pages/c/_cluster/explorer/EventsTable.vue +3 -6
- package/pages/c/_cluster/settings/performance.vue +1 -1
- package/pages/c/_cluster/uiplugins/PluginInfoPanel.vue +159 -62
- package/pages/c/_cluster/uiplugins/__tests__/PluginInfoPanel.test.ts +102 -0
- package/pages/c/_cluster/uiplugins/__tests__/{index.spec.ts → index.test.ts} +121 -55
- package/pages/c/_cluster/uiplugins/index.vue +110 -94
- package/plugins/__tests__/subscribe.events.test.ts +194 -0
- package/plugins/dashboard-store/actions.js +3 -0
- package/plugins/dashboard-store/getters.js +1 -1
- package/plugins/dashboard-store/resource-class.js +3 -3
- package/plugins/steve/__tests__/subscribe.spec.ts +27 -24
- package/plugins/steve/index.js +18 -10
- package/plugins/steve/mutations.js +2 -2
- package/plugins/steve/resourceWatcher.js +2 -2
- package/plugins/steve/steve-pagination-utils.ts +12 -9
- package/plugins/steve/subscribe.js +113 -85
- package/plugins/subscribe-events.ts +211 -0
- package/rancher-components/BadgeState/BadgeState.vue +8 -6
- package/rancher-components/Banner/Banner.vue +2 -1
- package/rancher-components/Form/Checkbox/Checkbox.vue +3 -3
- package/rancher-components/Form/Radio/RadioButton.vue +3 -3
- package/store/index.js +12 -22
- package/types/extension-manager.ts +8 -1
- package/types/resources/settings.d.ts +24 -17
- package/types/shell/index.d.ts +352 -335
- package/types/store/subscribe-events.types.ts +70 -0
- package/types/store/subscribe.types.ts +6 -22
- package/utils/pagination-utils.ts +87 -28
- package/utils/pagination-wrapper.ts +6 -8
- package/utils/sort.js +5 -0
- package/utils/unit-tests/pagination-utils.spec.ts +283 -0
- package/utils/validators/formRules/__tests__/index.test.ts +7 -0
- package/utils/validators/formRules/index.ts +2 -2
|
@@ -723,6 +723,17 @@ authConfig:
|
|
|
723
723
|
tokenEndpoint: Token Endpoint
|
|
724
724
|
userInfoEndpoint: User Info Endpoint
|
|
725
725
|
acrValue: Authorization Context Reference
|
|
726
|
+
customClaims:
|
|
727
|
+
label: Custom Claims
|
|
728
|
+
enable:
|
|
729
|
+
label: Add custom claims
|
|
730
|
+
tooltip: Manually map OIDC claims when your provider doesn’t use standard claim names in tokens.
|
|
731
|
+
nameClaim:
|
|
732
|
+
label: Custom Name Claim
|
|
733
|
+
groupsClaim:
|
|
734
|
+
label: Custom Groups Claim
|
|
735
|
+
emailClaim:
|
|
736
|
+
label: Custom Email Claim
|
|
726
737
|
cognitoIssuer: Issuer URL
|
|
727
738
|
cognitoHelp: "You will need to create an application client in Cognito of type <b>Traditional web application</b> with the Return URL set to the URL shown below."
|
|
728
739
|
scope:
|
|
@@ -941,10 +952,6 @@ asyncButton:
|
|
|
941
952
|
success: Updated
|
|
942
953
|
waiting: Updating…
|
|
943
954
|
upgrade:
|
|
944
|
-
action: Upgrade
|
|
945
|
-
success: Upgrading
|
|
946
|
-
waiting: Starting…
|
|
947
|
-
upgradeVersion:
|
|
948
955
|
action: Upgrade
|
|
949
956
|
success: Upgraded
|
|
950
957
|
waiting: Upgrading…
|
|
@@ -1262,7 +1269,6 @@ catalog:
|
|
|
1262
1269
|
upgrade { upgrade }
|
|
1263
1270
|
downgrade { upgrade }
|
|
1264
1271
|
editVersion { update }
|
|
1265
|
-
upgradeVersion { upgrade }
|
|
1266
1272
|
} the {existing, select,
|
|
1267
1273
|
true { app}
|
|
1268
1274
|
false { chart}
|
|
@@ -5128,16 +5134,17 @@ plugins:
|
|
|
5128
5134
|
closePluginPanel: Close plugin description panel
|
|
5129
5135
|
viewVersionDetails: View extension {name} version {version} details/Readme
|
|
5130
5136
|
labels:
|
|
5131
|
-
builtin: Built-
|
|
5137
|
+
builtin: Built-In
|
|
5132
5138
|
experimental: Experimental
|
|
5133
5139
|
third-party: Third-Party
|
|
5134
5140
|
image: Image
|
|
5135
5141
|
installing: Installing ...
|
|
5136
5142
|
uninstalling: Uninstalling ...
|
|
5137
|
-
|
|
5138
|
-
|
|
5143
|
+
upgrading: Upgrading ...
|
|
5144
|
+
downgrading: Downgrading ...
|
|
5139
5145
|
menu: Extensions menu
|
|
5140
5146
|
reloadRancher: Reload Rancher
|
|
5147
|
+
current: current
|
|
5141
5148
|
descriptions:
|
|
5142
5149
|
experimental: This Extension is marked as experimental
|
|
5143
5150
|
third-party: This Extension is provided by a Third-Party
|
|
@@ -5166,6 +5173,8 @@ plugins:
|
|
|
5166
5173
|
name: Extension module name
|
|
5167
5174
|
persist: Persist extension by creating custom resource
|
|
5168
5175
|
info:
|
|
5176
|
+
actions: Actions
|
|
5177
|
+
noActions: No actions available
|
|
5169
5178
|
detail: Detail
|
|
5170
5179
|
versions: Versions
|
|
5171
5180
|
versionError: Could not load version information
|
|
@@ -5229,7 +5238,7 @@ plugins:
|
|
|
5229
5238
|
tabs:
|
|
5230
5239
|
all: All
|
|
5231
5240
|
available: Available
|
|
5232
|
-
builtin: Built-
|
|
5241
|
+
builtin: Built-In
|
|
5233
5242
|
images: Images
|
|
5234
5243
|
installed: Installed
|
|
5235
5244
|
updates: Updates
|
|
@@ -5237,22 +5246,22 @@ plugins:
|
|
|
5237
5246
|
version: "Version: {version}"
|
|
5238
5247
|
install:
|
|
5239
5248
|
label: Install
|
|
5240
|
-
title: Install
|
|
5241
|
-
prompt: "Are you sure that you want to install this
|
|
5249
|
+
title: Install extension {name}
|
|
5250
|
+
prompt: "Are you sure that you want to install this extension?"
|
|
5242
5251
|
version: Version
|
|
5243
5252
|
warnNotCertified: Please ensure that you are aware of the risks of installing Extensions from untrusted authors
|
|
5244
|
-
|
|
5245
|
-
label:
|
|
5246
|
-
title:
|
|
5247
|
-
prompt: "Are you sure that you want to
|
|
5248
|
-
|
|
5249
|
-
label:
|
|
5250
|
-
title:
|
|
5251
|
-
prompt: "Are you sure that you want to
|
|
5253
|
+
upgrade:
|
|
5254
|
+
label: Upgrade
|
|
5255
|
+
title: Upgrade extension {name}
|
|
5256
|
+
prompt: "Are you sure that you want to upgrade this extension?"
|
|
5257
|
+
downgrade:
|
|
5258
|
+
label: Downgrade
|
|
5259
|
+
title: Downgrade extension {name}
|
|
5260
|
+
prompt: "Are you sure that you want to downgrade this extension?"
|
|
5252
5261
|
uninstall:
|
|
5253
5262
|
label: Uninstall
|
|
5254
|
-
title:
|
|
5255
|
-
prompt: "Are you sure that you want to uninstall this
|
|
5263
|
+
title: Uninstall extension {name}
|
|
5264
|
+
prompt: "Are you sure that you want to uninstall this extension?"
|
|
5256
5265
|
catalog: "Are you sure that you want to uninstall this Extension Catalog Image? This will also remove any Extensions provided by this image."
|
|
5257
5266
|
upgradeAvailable: A newer version of this Extension is available
|
|
5258
5267
|
reload: Extensions changed - reload required
|
|
@@ -5852,6 +5861,8 @@ resourceTabs:
|
|
|
5852
5861
|
tab: Conditions
|
|
5853
5862
|
events:
|
|
5854
5863
|
tab: Recent Events
|
|
5864
|
+
namespaceTab: "Events in Namespace"
|
|
5865
|
+
namespaceCaption: "Shows all events from resources in <span class='namespace-name'><b>{namespace}</b></span> namespace"
|
|
5855
5866
|
related:
|
|
5856
5867
|
tab: Related Resources
|
|
5857
5868
|
from: Referred To By
|
|
@@ -6558,6 +6569,7 @@ tableHeaders:
|
|
|
6558
6569
|
endpoints: Endpoints
|
|
6559
6570
|
expires: Expires
|
|
6560
6571
|
firstSeen: First Seen
|
|
6572
|
+
firstSeenTooltip: The time at which the event was first recorded
|
|
6561
6573
|
flow: Flow
|
|
6562
6574
|
fingerprint: Fingerprint
|
|
6563
6575
|
gitRepos: Git Repos
|
package/components/IconOrSvg.vue
CHANGED
|
@@ -24,12 +24,20 @@ const cssCache = {};
|
|
|
24
24
|
|
|
25
25
|
const colors = {
|
|
26
26
|
header: {
|
|
27
|
-
color:
|
|
28
|
-
hover:
|
|
27
|
+
color: '--on-tertiary-header',
|
|
28
|
+
hover: '--on-tertiary-header-hover',
|
|
29
|
+
colorFallback: '--header-btn-text',
|
|
30
|
+
hoverFallback: '--header-btn-text-hover',
|
|
31
|
+
active: '--on-tertiary-header-hover',
|
|
32
|
+
activeFallback: '--header-btn-text-hover',
|
|
29
33
|
},
|
|
30
34
|
primary: {
|
|
31
|
-
color:
|
|
32
|
-
hover:
|
|
35
|
+
color: '--link',
|
|
36
|
+
hover: '--link',
|
|
37
|
+
colorFallback: '--link',
|
|
38
|
+
hoverFallback: '--primary-hover-text',
|
|
39
|
+
active: '--on-active',
|
|
40
|
+
activeFallback: '--primary-hover-text',
|
|
33
41
|
}
|
|
34
42
|
};
|
|
35
43
|
|
|
@@ -65,45 +73,48 @@ export default {
|
|
|
65
73
|
},
|
|
66
74
|
|
|
67
75
|
methods: {
|
|
68
|
-
getComputedStyleFor(cssVar) {
|
|
69
|
-
|
|
76
|
+
getComputedStyleFor(cssVar, fallback) {
|
|
77
|
+
const value = window.getComputedStyle(document.body).getPropertyValue(cssVar).trim();
|
|
78
|
+
|
|
79
|
+
return normalizeHex(mapStandardColors(value ?? fallback));
|
|
80
|
+
},
|
|
81
|
+
|
|
82
|
+
resolveColorFilter(cacheKey, rgb) {
|
|
83
|
+
if (filterCache[cacheKey]) {
|
|
84
|
+
return filterCache[cacheKey];
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
const solver = new Solver(rgb);
|
|
88
|
+
const res = solver.solve();
|
|
89
|
+
const filter = res?.filter;
|
|
90
|
+
|
|
91
|
+
filterCache[cacheKey] = filter;
|
|
92
|
+
|
|
93
|
+
return filter;
|
|
70
94
|
},
|
|
71
95
|
|
|
72
96
|
setColor() {
|
|
73
|
-
const
|
|
74
|
-
const
|
|
97
|
+
const colorConfig = colors[this.color];
|
|
98
|
+
const uiColor = this.getComputedStyleFor(colorConfig.color, colorConfig.colorFallback);
|
|
99
|
+
const hoverColor = this.getComputedStyleFor(colorConfig.hover, colorConfig.hoverFallback);
|
|
100
|
+
const activeColor = this.getComputedStyleFor(colorConfig.active, colorConfig.activeFallback);
|
|
75
101
|
|
|
76
|
-
if (!uiColor || !hoverColor) {
|
|
102
|
+
if (!uiColor || !hoverColor || !activeColor) {
|
|
77
103
|
return;
|
|
78
104
|
}
|
|
79
105
|
|
|
80
106
|
const uiColorRGB = colorToRgb(uiColor);
|
|
81
107
|
const hoverColorRGB = colorToRgb(hoverColor);
|
|
108
|
+
const activeColorRGB = colorToRgb(activeColor);
|
|
82
109
|
const uiColorStr = `${ uiColorRGB.r }-${ uiColorRGB.g }-${ uiColorRGB.b }`;
|
|
83
110
|
const hoverColorStr = `${ hoverColorRGB.r }-${ hoverColorRGB.g }-${ hoverColorRGB.b }`;
|
|
84
111
|
|
|
85
112
|
const className = `svg-icon-${ uiColorStr }-${ hoverColorStr }`;
|
|
86
113
|
|
|
87
114
|
if (!cssCache[className]) {
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
const solver = new Solver(hoverColorRGB);
|
|
92
|
-
const res = solver.solve();
|
|
93
|
-
|
|
94
|
-
hoverFilter = res?.filter;
|
|
95
|
-
filterCache[hoverColor] = hoverFilter;
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
let mainFilter = filterCache[uiColor];
|
|
99
|
-
|
|
100
|
-
if (!mainFilter) {
|
|
101
|
-
const solver = new Solver(uiColorRGB);
|
|
102
|
-
const res = solver.solve();
|
|
103
|
-
|
|
104
|
-
mainFilter = res?.filter;
|
|
105
|
-
filterCache[uiColor] = mainFilter;
|
|
106
|
-
}
|
|
115
|
+
const hoverFilter = this.resolveColorFilter(hoverColor, hoverColorRGB);
|
|
116
|
+
const mainFilter = this.resolveColorFilter(uiColor, uiColorRGB);
|
|
117
|
+
const activeFilter = this.resolveColorFilter(activeColor, activeColorRGB);
|
|
107
118
|
|
|
108
119
|
// Add stylesheet (added as global styles)
|
|
109
120
|
const styles = `
|
|
@@ -123,7 +134,7 @@ export default {
|
|
|
123
134
|
${ hoverFilter };
|
|
124
135
|
}
|
|
125
136
|
a.option.active-menu-link > img.${ className } {
|
|
126
|
-
${
|
|
137
|
+
${ activeFilter };
|
|
127
138
|
}
|
|
128
139
|
`;
|
|
129
140
|
|
|
@@ -181,6 +181,7 @@ export default {
|
|
|
181
181
|
if (e.status === 404 || e.status === 403) {
|
|
182
182
|
store.dispatch('loadingError', new Error(this.t('nav.failWhale.resourceIdNotFound', { resource: resourceType, fqid }, true)));
|
|
183
183
|
}
|
|
184
|
+
console.debug(`Could not find '${ resourceType }' with id '${ id }''`, e); // eslint-disable-line no-console
|
|
184
185
|
liveModel = {};
|
|
185
186
|
notFound = fqid;
|
|
186
187
|
}
|
|
@@ -68,6 +68,7 @@ export default {
|
|
|
68
68
|
|
|
69
69
|
data() {
|
|
70
70
|
let sortBy = null;
|
|
71
|
+
let descending = false;
|
|
71
72
|
|
|
72
73
|
this._defaultSortBy = this.defaultSortBy;
|
|
73
74
|
|
|
@@ -78,6 +79,7 @@ export default {
|
|
|
78
79
|
|
|
79
80
|
if ( markedColumn ) {
|
|
80
81
|
this._defaultSortBy = markedColumn.name;
|
|
82
|
+
descending = markedColumn.defaultSortDescending;
|
|
81
83
|
} else if ( nameColumn ) {
|
|
82
84
|
// Use the name column if there is one
|
|
83
85
|
this._defaultSortBy = nameColumn.name;
|
|
@@ -101,7 +103,7 @@ export default {
|
|
|
101
103
|
|
|
102
104
|
return {
|
|
103
105
|
sortBy,
|
|
104
|
-
descending
|
|
106
|
+
descending,
|
|
105
107
|
cachedRows: null,
|
|
106
108
|
cacheKey: null,
|
|
107
109
|
};
|
|
@@ -412,7 +412,7 @@ export default {
|
|
|
412
412
|
}
|
|
413
413
|
|
|
414
414
|
.tab.active {
|
|
415
|
-
border-bottom: solid 2px var(--primary);
|
|
415
|
+
border-bottom: solid 2px var(--active, var(--primary));
|
|
416
416
|
}
|
|
417
417
|
}
|
|
418
418
|
|
|
@@ -450,7 +450,7 @@ export default {
|
|
|
450
450
|
|
|
451
451
|
&.active {
|
|
452
452
|
> A {
|
|
453
|
-
color: var(--primary);
|
|
453
|
+
color: var(--active, var(--primary));
|
|
454
454
|
text-decoration: none;
|
|
455
455
|
}
|
|
456
456
|
}
|
|
@@ -530,16 +530,16 @@ export default {
|
|
|
530
530
|
border-left: solid 5px transparent;
|
|
531
531
|
|
|
532
532
|
&.toggle A {
|
|
533
|
-
color: var(--primary);
|
|
533
|
+
color: var(--active, var(--primary));
|
|
534
534
|
}
|
|
535
535
|
|
|
536
536
|
A {
|
|
537
|
-
color: var(--primary);
|
|
537
|
+
color: var(--link, var(--primary));
|
|
538
538
|
}
|
|
539
539
|
|
|
540
540
|
&.active {
|
|
541
541
|
background-color: var(--body-bg);
|
|
542
|
-
border-left: solid 5px var(--primary);
|
|
542
|
+
border-left: solid 5px var(--active, var(--primary));
|
|
543
543
|
|
|
544
544
|
& A {
|
|
545
545
|
color: var(--input-label);
|
|
@@ -7,14 +7,14 @@ import Tabbed from '@shell/components/Tabbed';
|
|
|
7
7
|
import Tab from '@shell/components/Tabbed/Tab';
|
|
8
8
|
import CreateEditView from '@shell/mixins/create-edit-view';
|
|
9
9
|
import Conditions from '@shell/components/form/Conditions';
|
|
10
|
-
import { EVENT } from '@shell/config/types';
|
|
10
|
+
import { EVENT, NAMESPACE } from '@shell/config/types';
|
|
11
11
|
import PaginatedResourceTable from '@shell/components/PaginatedResourceTable.vue';
|
|
12
12
|
import { _VIEW } from '@shell/config/query-params';
|
|
13
13
|
import RelatedResources from '@shell/components/RelatedResources';
|
|
14
14
|
import { isConditionReadyAndWaiting } from '@shell/plugins/dashboard-store/resource-class';
|
|
15
15
|
import { PaginationParamFilter } from '@shell/types/store/pagination.types';
|
|
16
16
|
import { MESSAGE, REASON } from '@shell/config/table-headers';
|
|
17
|
-
import { STEVE_EVENT_LAST_SEEN, STEVE_EVENT_TYPE, STEVE_NAME_COL } from '@shell/config/pagination-table-headers';
|
|
17
|
+
import { STEVE_EVENT_FIRST_SEEN, STEVE_EVENT_LAST_SEEN, STEVE_EVENT_TYPE, STEVE_NAME_COL } from '@shell/config/pagination-table-headers';
|
|
18
18
|
import { headerFromSchemaColString } from '@shell/store/type-map.utils';
|
|
19
19
|
import { useIndicateUseCounts } from '@shell/components/form/ResourceTabs/composable';
|
|
20
20
|
|
|
@@ -93,7 +93,7 @@ export default {
|
|
|
93
93
|
headerFromSchemaColString('Subobject', eventSchema, this.$store.getters, true),
|
|
94
94
|
headerFromSchemaColString('Source', eventSchema, this.$store.getters, true),
|
|
95
95
|
MESSAGE,
|
|
96
|
-
|
|
96
|
+
STEVE_EVENT_FIRST_SEEN,
|
|
97
97
|
headerFromSchemaColString('Count', eventSchema, this.$store.getters, true),
|
|
98
98
|
STEVE_NAME_COL,
|
|
99
99
|
] : [];
|
|
@@ -119,6 +119,9 @@ export default {
|
|
|
119
119
|
},
|
|
120
120
|
|
|
121
121
|
computed: {
|
|
122
|
+
isNamespace() {
|
|
123
|
+
return this.value?.type === NAMESPACE;
|
|
124
|
+
},
|
|
122
125
|
showEvents() {
|
|
123
126
|
return this.isView && this.needEvents && this.eventSchema;
|
|
124
127
|
},
|
|
@@ -190,7 +193,9 @@ export default {
|
|
|
190
193
|
* Filter out hidden repos from list of all repos
|
|
191
194
|
*/
|
|
192
195
|
filterEventsLocal(rows) {
|
|
193
|
-
return rows.filter((event) =>
|
|
196
|
+
return rows.filter((event) => {
|
|
197
|
+
return this.isNamespace ? event.metadata?.namespace === this.value?.metadata?.name : event.involvedObject?.uid === this.value?.metadata?.uid;
|
|
198
|
+
});
|
|
194
199
|
},
|
|
195
200
|
|
|
196
201
|
/**
|
|
@@ -204,27 +209,22 @@ export default {
|
|
|
204
209
|
pagination.filters = [];
|
|
205
210
|
}
|
|
206
211
|
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
let existing = null;
|
|
211
|
-
|
|
212
|
-
for (let i = 0; i < pagination.filters.length; i++) {
|
|
213
|
-
const filter = pagination.filters[i];
|
|
212
|
+
// Determine the field and value based on type
|
|
213
|
+
const field = this.isNamespace ? 'metadata.namespace' : 'involvedObject.uid';
|
|
214
|
+
const value = this.isNamespace ? this.value.metadata.name : this.value.metadata.uid;
|
|
214
215
|
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
break;
|
|
218
|
-
}
|
|
219
|
-
}
|
|
216
|
+
// Check if a filter for this field already exists
|
|
217
|
+
const existing = pagination.filters.find((f) => f.fields.some((ff) => ff.field === field));
|
|
220
218
|
|
|
219
|
+
// Create the required filter
|
|
221
220
|
const required = PaginationParamFilter.createSingleField({
|
|
222
221
|
field,
|
|
223
222
|
exact: true,
|
|
224
|
-
value
|
|
223
|
+
value,
|
|
225
224
|
equals: true
|
|
226
225
|
});
|
|
227
226
|
|
|
227
|
+
// Merge or add the filter
|
|
228
228
|
if (!!existing) {
|
|
229
229
|
Object.assign(existing, required);
|
|
230
230
|
} else {
|
|
@@ -260,10 +260,16 @@ export default {
|
|
|
260
260
|
|
|
261
261
|
<Tab
|
|
262
262
|
v-if="showEvents"
|
|
263
|
-
label
|
|
263
|
+
:label="isNamespace ? t('resourceTabs.events.namespaceTab') : t('resourceTabs.events.tab')"
|
|
264
264
|
name="events"
|
|
265
265
|
:weight="-2"
|
|
266
266
|
>
|
|
267
|
+
<!-- Caption for namespace pages -->
|
|
268
|
+
<div
|
|
269
|
+
v-if="isNamespace"
|
|
270
|
+
v-clean-html="t('resourceTabs.events.namespaceCaption', { namespace: value.metadata.name }, true)"
|
|
271
|
+
class="tab-caption"
|
|
272
|
+
/>
|
|
267
273
|
<!-- namespaced: false given we don't want the default handling of namespaced resource (apply header filter) -->
|
|
268
274
|
<PaginatedResourceTable
|
|
269
275
|
:schema="eventSchema"
|
|
@@ -318,4 +324,17 @@ export default {
|
|
|
318
324
|
}
|
|
319
325
|
}
|
|
320
326
|
}
|
|
327
|
+
/* Caption for namespace events tab */
|
|
328
|
+
.tab-caption {
|
|
329
|
+
align-items: center;
|
|
330
|
+
font-size: 16px;
|
|
331
|
+
margin-bottom: 24px;
|
|
332
|
+
|
|
333
|
+
.namespace-name {
|
|
334
|
+
display: inline;
|
|
335
|
+
font-weight: bold;
|
|
336
|
+
margin-right: 0 4px;
|
|
337
|
+
white-space: nowrap;
|
|
338
|
+
}
|
|
339
|
+
}
|
|
321
340
|
</style>
|
|
@@ -61,7 +61,7 @@ export default {
|
|
|
61
61
|
},
|
|
62
62
|
inStore: {
|
|
63
63
|
type: String,
|
|
64
|
-
default:
|
|
64
|
+
default: undefined,
|
|
65
65
|
}
|
|
66
66
|
},
|
|
67
67
|
|
|
@@ -129,6 +129,10 @@ export default {
|
|
|
129
129
|
}));
|
|
130
130
|
},
|
|
131
131
|
|
|
132
|
+
validInStore() {
|
|
133
|
+
return this.inStore || this.$store.getters['currentStore']() || 'cluster';
|
|
134
|
+
},
|
|
135
|
+
|
|
132
136
|
isView() {
|
|
133
137
|
return this.mode === _VIEW;
|
|
134
138
|
},
|
|
@@ -221,7 +225,7 @@ export default {
|
|
|
221
225
|
:label="secretNameLabel"
|
|
222
226
|
:mode="mode"
|
|
223
227
|
:resource-type="SECRET"
|
|
224
|
-
:in-store="
|
|
228
|
+
:in-store="validInStore"
|
|
225
229
|
:paginated-resource-settings="paginateSecretsSetting"
|
|
226
230
|
:all-resources-settings="allSecretsSettings"
|
|
227
231
|
/>
|
package/components/nav/Group.vue
CHANGED
|
@@ -381,21 +381,21 @@ export default {
|
|
|
381
381
|
}
|
|
382
382
|
|
|
383
383
|
&.active {
|
|
384
|
-
color: var(--primary-hover-text);
|
|
385
|
-
background-color: var(--primary-hover-bg);
|
|
384
|
+
color: var(--on-active, var(--primary-hover-text));
|
|
385
|
+
background-color: var(--active-nav, var(--primary-hover-bg));
|
|
386
386
|
|
|
387
387
|
h6 {
|
|
388
388
|
padding: 8px 0 8px 16px;
|
|
389
389
|
font-weight: bold;
|
|
390
|
-
color: var(--primary-hover-text);
|
|
390
|
+
color: var(--on-active, var(--primary-hover-text));
|
|
391
391
|
}
|
|
392
392
|
|
|
393
393
|
&:hover {
|
|
394
|
-
background-color: var(--primary-hover-bg);
|
|
394
|
+
background-color: var(--nav-active-hover, var(--primary-hover-bg));
|
|
395
395
|
}
|
|
396
396
|
|
|
397
397
|
~ I {
|
|
398
|
-
color: var(--primary-hover-text);
|
|
398
|
+
color: var(--on-active, var(--primary-hover-text));
|
|
399
399
|
}
|
|
400
400
|
}
|
|
401
401
|
&:hover:not(.active) {
|
|
@@ -433,8 +433,24 @@ export default {
|
|
|
433
433
|
margin-left: 0;
|
|
434
434
|
}
|
|
435
435
|
|
|
436
|
+
.child:hover {
|
|
437
|
+
background: var(--nav-hover, var(--nav-active));
|
|
438
|
+
}
|
|
439
|
+
|
|
436
440
|
&.group-highlight {
|
|
437
|
-
background: var(--nav-active);
|
|
441
|
+
background: var(--category-active, var(--nav-active));
|
|
442
|
+
|
|
443
|
+
.active.header {
|
|
444
|
+
&:hover {
|
|
445
|
+
background-color: var(--nav-active-hover)
|
|
446
|
+
}
|
|
447
|
+
}
|
|
448
|
+
|
|
449
|
+
.child, .header {
|
|
450
|
+
&:hover {
|
|
451
|
+
background: var(--category-active-hover, var(--primary));
|
|
452
|
+
}
|
|
453
|
+
}
|
|
438
454
|
}
|
|
439
455
|
}
|
|
440
456
|
|
|
@@ -480,13 +496,17 @@ export default {
|
|
|
480
496
|
padding: 0;
|
|
481
497
|
|
|
482
498
|
A, A I {
|
|
483
|
-
color: var(--primary-hover-text);
|
|
499
|
+
color: var(--on-active, var(--primary-hover-text));
|
|
484
500
|
}
|
|
485
501
|
|
|
486
502
|
A {
|
|
487
|
-
color: var(--primary-hover-text);
|
|
488
|
-
background-color: var(--primary-hover-bg);
|
|
503
|
+
color: var(--on-active, var(--primary-hover-text));
|
|
504
|
+
background-color: var(--active-nav, var(--primary-hover-bg));
|
|
489
505
|
font-weight: bold;
|
|
506
|
+
|
|
507
|
+
&:hover {
|
|
508
|
+
background: var(--nav-active-hover);
|
|
509
|
+
}
|
|
490
510
|
}
|
|
491
511
|
}
|
|
492
512
|
|
|
@@ -843,16 +843,14 @@ export default {
|
|
|
843
843
|
align-items: center;
|
|
844
844
|
display: flex;
|
|
845
845
|
margin-right: 8px;
|
|
846
|
-
height: 55px;
|
|
847
|
-
margin-left: 5px;
|
|
848
846
|
max-width: 200px;
|
|
849
847
|
padding: 12px 0;
|
|
850
848
|
}
|
|
851
849
|
|
|
852
850
|
.side-menu-logo-img {
|
|
853
851
|
object-fit: contain;
|
|
854
|
-
height: 21px;
|
|
855
852
|
max-width: 200px;
|
|
853
|
+
height: 36px;
|
|
856
854
|
}
|
|
857
855
|
|
|
858
856
|
> * {
|
|
@@ -933,8 +931,8 @@ export default {
|
|
|
933
931
|
:deep() div .btn.role-tertiary {
|
|
934
932
|
border: 1px solid var(--header-btn-bg);
|
|
935
933
|
border: none;
|
|
936
|
-
background: var(--header-btn-bg);
|
|
937
|
-
color: var(--header-btn-text);
|
|
934
|
+
background: var(--tertiary-header, var(--header-btn-bg));
|
|
935
|
+
color: var(--on-tertiary-header, var(--header-btn-text));
|
|
938
936
|
padding: 0 10px;
|
|
939
937
|
line-height: 32px;
|
|
940
938
|
min-height: 32px;
|
|
@@ -945,8 +943,8 @@ export default {
|
|
|
945
943
|
}
|
|
946
944
|
|
|
947
945
|
&:hover {
|
|
948
|
-
background: var(--primary);
|
|
949
|
-
color: #fff;
|
|
946
|
+
background: var(--tertiary-header-hover, var(--primary));
|
|
947
|
+
color: var(--on-tertiary-header-hover, #fff);
|
|
950
948
|
}
|
|
951
949
|
|
|
952
950
|
&[disabled=disabled] {
|
|
@@ -1079,7 +1077,7 @@ export default {
|
|
|
1079
1077
|
.user-name {
|
|
1080
1078
|
display: flex;
|
|
1081
1079
|
align-items: center;
|
|
1082
|
-
color: var(--secondary);
|
|
1080
|
+
color: var(--body-text, var(--secondary));
|
|
1083
1081
|
}
|
|
1084
1082
|
|
|
1085
1083
|
.user-menu {
|