@rancher/shell 3.0.9-rc.5 → 3.0.9
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/oci-open-containers.svg +22 -0
- package/assets/images/providers/traefik.png +0 -0
- package/assets/styles/themes/_dark.scss +2 -0
- package/assets/styles/themes/_light.scss +2 -0
- package/assets/styles/themes/_modern.scss +6 -0
- package/assets/translations/en-us.yaml +129 -25
- package/components/CruResource.vue +3 -1
- package/components/ExplorerProjectsNamespaces.vue +12 -12
- package/components/IconOrSvg.vue +61 -42
- package/components/Resource/Detail/Card/StatusCard/__tests__/StatusCard.test.ts +109 -0
- package/components/Resource/Detail/Card/StatusCard/index.vue +21 -4
- package/components/Resource/Detail/Metadata/IdentifyingInformation/__tests__/identifying-fields.test.ts +19 -2
- package/components/Resource/Detail/Metadata/IdentifyingInformation/identifying-fields.ts +19 -11
- package/components/Resource/Detail/ResourcePopover/__tests__/index.test.ts +12 -0
- package/components/Resource/Detail/ResourcePopover/index.vue +2 -0
- package/components/Resource/Detail/ResourceRow.vue +2 -2
- package/components/ResourceList/index.vue +7 -4
- package/components/SortableTable/index.vue +2 -2
- package/components/Window/ContainerLogs.vue +48 -37
- package/components/fleet/FleetClusterTargets/TargetsList.vue +2 -2
- package/components/fleet/FleetClusterTargets/index.vue +6 -1
- package/components/fleet/GitRepoAdvancedTab.vue +333 -0
- package/components/fleet/GitRepoMetadataTab.vue +43 -0
- package/components/fleet/GitRepoRepositoryTab.vue +101 -0
- package/components/fleet/GitRepoTargetTab.vue +77 -0
- package/components/fleet/HelmOpAdvancedTab.vue +247 -0
- package/components/fleet/HelmOpChartTab.vue +158 -0
- package/components/fleet/HelmOpMetadataTab.vue +46 -0
- package/components/fleet/HelmOpTargetTab.vue +84 -0
- package/components/fleet/HelmOpValuesTab.vue +147 -0
- package/components/fleet/__tests__/FleetClusterTargets.test.ts +119 -70
- package/components/form/BannerSettings.vue +2 -2
- package/components/form/NodeScheduling.vue +81 -7
- package/components/form/NotificationSettings.vue +2 -2
- package/components/form/PodAffinity.vue +1 -36
- package/components/form/ResourceLabeledSelect.vue +8 -4
- package/components/form/ResourceQuota/Namespace.vue +30 -9
- package/components/form/ResourceQuota/NamespaceRow.vue +25 -7
- package/components/form/ResourceQuota/Project.vue +140 -82
- package/components/form/ResourceQuota/ResourceQuotaEntry.vue +145 -0
- package/components/form/ResourceQuota/__tests__/Namespace.test.ts +307 -0
- package/components/form/ResourceQuota/__tests__/NamespaceRow.test.ts +281 -0
- package/components/form/ResourceQuota/__tests__/Project.test.ts +274 -27
- package/components/form/ResourceQuota/__tests__/ResourceQuotaEntry.test.ts +215 -0
- package/components/form/SchedulingCustomization.vue +14 -6
- package/components/form/SelectOrCreateAuthSecret.vue +107 -18
- package/components/form/__tests__/NodeScheduling.test.ts +12 -9
- package/components/form/__tests__/PodAffinity.test.ts +21 -2
- package/components/form/__tests__/SchedulingCustomization.test.ts +240 -0
- package/components/formatter/ClusterLink.vue +8 -0
- package/components/formatter/SecretOrigin.vue +79 -0
- package/config/labels-annotations.js +7 -6
- package/config/pagination-table-headers.js +6 -4
- package/config/product/explorer.js +1 -11
- package/config/product/manager.js +0 -1
- package/config/query-params.js +3 -0
- package/config/settings.ts +15 -2
- package/config/table-headers.js +21 -17
- package/config/types.js +23 -8
- package/detail/fleet.cattle.io.cluster.vue +1 -1
- package/detail/workload/index.vue +11 -16
- package/dialog/DeactivateDriverDialog.vue +1 -1
- package/dialog/FeatureFlagListDialog.vue +1 -1
- package/dialog/Ipv6NetworkingDialog.vue +156 -0
- package/dialog/ScalePoolDownDialog.vue +2 -2
- package/edit/__tests__/fleet.cattle.io.gitrepo.test.ts +1 -1
- package/edit/__tests__/fleet.cattle.io.helmop.test.ts +1 -0
- package/edit/__tests__/management.cattle.io.project.test.js +56 -128
- package/edit/auth/oidc.vue +1 -1
- package/edit/catalog.cattle.io.clusterrepo.vue +155 -25
- package/edit/fleet.cattle.io.gitrepo.vue +153 -283
- package/edit/fleet.cattle.io.helmop.vue +190 -332
- package/edit/management.cattle.io.project.vue +5 -42
- package/edit/management.cattle.io.setting.vue +6 -0
- package/edit/monitoring.coreos.com.alertmanagerconfig/__tests__/auth.spec.ts +145 -0
- package/edit/monitoring.coreos.com.alertmanagerconfig/__tests__/index.test.ts +202 -0
- package/edit/monitoring.coreos.com.alertmanagerconfig/__tests__/tls.spec.ts +226 -0
- package/edit/monitoring.coreos.com.alertmanagerconfig/auth.vue +24 -21
- package/edit/monitoring.coreos.com.alertmanagerconfig/types/__tests__/opsgenie.spec.ts +157 -0
- package/edit/monitoring.coreos.com.alertmanagerconfig/types/__tests__/pagerduty.spec.ts +132 -0
- package/edit/monitoring.coreos.com.alertmanagerconfig/types/__tests__/slack.spec.ts +108 -0
- package/edit/monitoring.coreos.com.alertmanagerconfig/types/pagerduty.vue +2 -1
- package/edit/monitoring.coreos.com.receiver/__tests__/auth.spec.ts +165 -0
- package/edit/monitoring.coreos.com.receiver/__tests__/index.test.ts +153 -0
- package/edit/monitoring.coreos.com.receiver/__tests__/tls.spec.ts +115 -0
- package/edit/monitoring.coreos.com.receiver/types/__tests__/email.spec.ts +86 -0
- package/edit/monitoring.coreos.com.receiver/types/__tests__/opsgenie.spec.ts +209 -0
- package/edit/monitoring.coreos.com.receiver/types/__tests__/pagerduty.spec.ts +105 -0
- package/edit/monitoring.coreos.com.receiver/types/__tests__/slack.spec.ts +92 -0
- package/edit/monitoring.coreos.com.receiver/types/__tests__/webhook.spec.ts +131 -0
- package/edit/provisioning.cattle.io.cluster/__tests__/Basics.test.ts +55 -24
- package/edit/provisioning.cattle.io.cluster/__tests__/Networking.test.ts +1 -103
- package/edit/provisioning.cattle.io.cluster/__tests__/index.test.ts +13 -1
- package/edit/provisioning.cattle.io.cluster/__tests__/rke2-fleet-cluster-agent.test.ts +283 -0
- package/edit/provisioning.cattle.io.cluster/__tests__/rke2.test.ts +65 -49
- package/edit/provisioning.cattle.io.cluster/ingress/IngressCards.vue +114 -0
- package/edit/provisioning.cattle.io.cluster/ingress/IngressConfiguration.vue +158 -0
- package/edit/provisioning.cattle.io.cluster/rke2.vue +167 -69
- package/edit/provisioning.cattle.io.cluster/shared.ts +36 -1
- package/edit/provisioning.cattle.io.cluster/tabs/AgentConfiguration.vue +2 -1
- package/edit/provisioning.cattle.io.cluster/tabs/Basics.vue +70 -7
- package/edit/provisioning.cattle.io.cluster/tabs/Ingress.vue +343 -0
- package/edit/provisioning.cattle.io.cluster/tabs/MachinePool.vue +2 -1
- package/edit/provisioning.cattle.io.cluster/tabs/etcd/__tests__/S3Config.test.ts +13 -1
- package/edit/provisioning.cattle.io.cluster/tabs/networking/index.vue +10 -44
- package/edit/secret/index.vue +1 -1
- package/edit/token.vue +68 -29
- package/edit/workload/__tests__/index.test.ts +2 -37
- package/edit/workload/index.vue +6 -2
- package/edit/workload/mixins/workload.js +0 -32
- package/list/__tests__/management.cattle.io.setting.test.ts +198 -0
- package/list/management.cattle.io.setting.vue +13 -0
- package/list/provisioning.cattle.io.cluster.vue +50 -1
- package/list/secret.vue +4 -9
- package/list/service.vue +6 -8
- package/machine-config/amazonec2.vue +11 -4
- package/machine-config/components/EC2Networking.vue +46 -30
- package/machine-config/components/__tests__/EC2Networking.test.ts +7 -7
- package/machine-config/components/__tests__/utils/vpcSubnetMockData.js +0 -9
- package/machine-config/digitalocean.vue +3 -3
- package/models/__tests__/chart.test.ts +2 -2
- package/models/__tests__/namespace.test.ts +11 -0
- package/models/__tests__/provisioning.cattle.io.cluster.test.ts +96 -0
- package/models/__tests__/workload.test.ts +42 -1
- package/models/catalog.cattle.io.clusterrepo.js +30 -4
- package/models/chart.js +3 -3
- package/models/ext.cattle.io.token.js +48 -0
- package/models/kontainerdriver.js +2 -2
- package/models/namespace.js +7 -1
- package/models/nodedriver.js +2 -2
- package/models/provisioning.cattle.io.cluster.js +28 -7
- package/models/secret.js +0 -17
- package/models/service.js +44 -1
- package/models/token.js +4 -0
- package/models/workload.js +12 -6
- package/package.json +1 -1
- package/pages/account/index.vue +96 -67
- package/pages/auth/setup.vue +5 -14
- package/pages/c/_cluster/apps/charts/AppChartCardFooter.vue +45 -18
- package/pages/c/_cluster/apps/charts/__tests__/install.test.ts +4 -1
- package/pages/c/_cluster/apps/charts/index.vue +82 -3
- package/pages/c/_cluster/apps/charts/install.vue +317 -42
- package/pages/c/_cluster/explorer/tools/index.vue +1 -1
- package/pages/c/_cluster/manager/cloudCredential/index.vue +1 -1
- package/pages/c/_cluster/manager/drivers/kontainerDriver/index.vue +5 -4
- package/pages/c/_cluster/settings/index.vue +3 -1
- package/pages/c/_cluster/uiplugins/index.vue +1 -1
- package/plugins/dashboard-store/__tests__/getters.test.ts +108 -0
- package/plugins/dashboard-store/__tests__/resource-class.test.ts +27 -0
- package/plugins/dashboard-store/actions.js +3 -8
- package/plugins/dashboard-store/getters.js +7 -5
- package/plugins/dashboard-store/mutations.js +4 -1
- package/plugins/dashboard-store/resource-class.js +3 -3
- package/plugins/steve/__tests__/steve-class.test.ts +102 -141
- package/plugins/steve/steve-class.js +12 -3
- package/plugins/steve/steve-pagination-utils.ts +6 -2
- package/rancher-components/RcIcon/types.ts +2 -0
- package/rancher-components/RcItemCard/RcItemCard.vue +72 -20
- package/store/prefs.js +3 -0
- package/types/aws-sdk.d.ts +121 -0
- package/types/resources/node.ts +15 -0
- package/types/shell/index.d.ts +537 -506
- package/types/store/pagination.types.ts +5 -5
- package/utils/__tests__/array.test.ts +1 -29
- package/utils/__tests__/cluster-agent-configuration.test.ts +203 -0
- package/utils/array.ts +0 -11
- package/utils/aws.ts +21 -0
- package/utils/cluster.js +22 -2
- package/utils/selector-typed.ts +1 -1
- package/utils/svg-filter.js +4 -3
- package/components/__tests__/ProjectRow.test.ts +0 -206
- package/components/form/ResourceQuota/ProjectRow.vue +0 -277
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
|
2
|
+
<!-- Generator: Adobe Illustrator 21.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
|
3
|
+
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
|
4
|
+
viewBox="0 0 576 576" style="enable-background:new 0 0 576 576;" xml:space="preserve">
|
|
5
|
+
<style type="text/css">
|
|
6
|
+
.st0{fill:#808184;}
|
|
7
|
+
.st1{fill:#262261;}
|
|
8
|
+
</style>
|
|
9
|
+
<g>
|
|
10
|
+
<g>
|
|
11
|
+
<g>
|
|
12
|
+
<polygon class="st0" points="326.6,212.6 326.6,132.6 128.6,132.6 128.6,444.6 326.6,444.6 326.6,364.6 208.6,364.6 208.6,212.6
|
|
13
|
+
"/>
|
|
14
|
+
<g>
|
|
15
|
+
<rect x="366.5" y="132.6" class="st1" width="79.9" height="79.9"/>
|
|
16
|
+
<rect x="366.5" y="252.6" class="st1" width="79.9" height="192"/>
|
|
17
|
+
</g>
|
|
18
|
+
</g>
|
|
19
|
+
<path class="st1" d="M8.5,9.5v558.2h558.2V9.5H8.5z M486.4,484.7H88.7V92.6h397.8V484.7z"/>
|
|
20
|
+
</g>
|
|
21
|
+
</g>
|
|
22
|
+
</svg>
|
|
Binary file
|
|
@@ -724,6 +724,9 @@ BODY, .theme-light {
|
|
|
724
724
|
--rc-disabled-background: #{$gray001};
|
|
725
725
|
--rc-disabled-text-color: #{$gray004};
|
|
726
726
|
|
|
727
|
+
--rc-image-bg: #{$lightest};
|
|
728
|
+
--rc-image-color: #{$darkest};
|
|
729
|
+
|
|
727
730
|
--warning-badge : #{$warning};
|
|
728
731
|
--on-warning-banner : #{darken($warning, 60%)};
|
|
729
732
|
|
|
@@ -1065,6 +1068,9 @@ BODY, .theme-dark {
|
|
|
1065
1068
|
--rc-disabled-background: #{$gray005};
|
|
1066
1069
|
--rc-disabled-text-color: #{$gray004};
|
|
1067
1070
|
|
|
1071
|
+
--rc-image-bg: #{$lightest};
|
|
1072
|
+
--rc-image-color: #{$darkest};
|
|
1073
|
+
|
|
1068
1074
|
--error-text : #FFAC99;
|
|
1069
1075
|
--warning-text : #{contrast-color($warning)};
|
|
1070
1076
|
|
|
@@ -164,8 +164,8 @@ generic:
|
|
|
164
164
|
internalIps: Internal IPs
|
|
165
165
|
opensInNewTab: Opens in a new tab
|
|
166
166
|
autogeneratedCreated:
|
|
167
|
-
title: "{resource}
|
|
168
|
-
message: "{id} has been created."
|
|
167
|
+
title: "Created {resource}"
|
|
168
|
+
message: "{resource} {id} has been created."
|
|
169
169
|
|
|
170
170
|
tabs:
|
|
171
171
|
addItem: Add a new tab item
|
|
@@ -438,6 +438,7 @@ accountAndKeys:
|
|
|
438
438
|
notAllowed: You do not have permission to manage API Keys
|
|
439
439
|
apiEndpoint: "API Endpoint:"
|
|
440
440
|
copyApiEnpoint: Copy API Endpoint to clipboard
|
|
441
|
+
normanTokenDeprecation: The API Keys feature is being migrated to a new API. Any existing API Keys from the legacy API will continue to work, but new API Keys will be created using the new API.
|
|
441
442
|
add:
|
|
442
443
|
description:
|
|
443
444
|
label: Description
|
|
@@ -463,7 +464,9 @@ accountAndKeys:
|
|
|
463
464
|
month: Months
|
|
464
465
|
year: Years
|
|
465
466
|
scope: Scope
|
|
467
|
+
userPrincipal: User Principal
|
|
466
468
|
noScope: No Scope
|
|
469
|
+
enabled: Token enabled
|
|
467
470
|
info:
|
|
468
471
|
accessKey: Access Key
|
|
469
472
|
secretKey: Secret Key
|
|
@@ -472,7 +475,7 @@ accountAndKeys:
|
|
|
472
475
|
keyCreated: A new API Key has been created
|
|
473
476
|
bearerTokenTip: "Access Key and Secret Key can be sent as the username and password for HTTP Basic auth to authorize requests. You can also combine them to use as a Bearer token:"
|
|
474
477
|
ttlLimitedWarning: The Expiry time for this API Key was reduced due to system configuration
|
|
475
|
-
|
|
478
|
+
expiryOptionsWithNever: Since "auth-token-max-ttl-minutes" is set to <= 0, the API Key will not expire unless the "Automatically expire" option is set to "Custom" and a custom expiry time is set.
|
|
476
479
|
addClusterMemberDialog:
|
|
477
480
|
title: Add Cluster Member
|
|
478
481
|
|
|
@@ -1191,6 +1194,7 @@ catalog:
|
|
|
1191
1194
|
statusFilterCautions:
|
|
1192
1195
|
installation: Installation status cannot be determined with 100% accuracy
|
|
1193
1196
|
upgradeable: Upgradeable status cannot be determined with 100% accuracy
|
|
1197
|
+
appCollectionRepoMissing: The SUSE Application Collection repository is not currently configured. You can add it on the <repoCreate>Repository Create</repoCreate> page.
|
|
1194
1198
|
totalChartsMessage: |-
|
|
1195
1199
|
{count , plural,
|
|
1196
1200
|
=1 { {count} chart in total }
|
|
@@ -1218,6 +1222,7 @@ catalog:
|
|
|
1218
1222
|
repo: repository
|
|
1219
1223
|
category: category
|
|
1220
1224
|
tag: tag
|
|
1225
|
+
isFromSuseAppCoRepository: From SUSE App Collection.
|
|
1221
1226
|
install:
|
|
1222
1227
|
action:
|
|
1223
1228
|
goToUpgrade: Edit / Change Version
|
|
@@ -1332,6 +1337,11 @@ catalog:
|
|
|
1332
1337
|
}. Start by setting some basic information used by {vendor} to manage the App.
|
|
1333
1338
|
nsCreationDescription: "To install the app into a new namespace enter it's name in the Namespace field and select it."
|
|
1334
1339
|
createNamespace: "Namespace <code>{namespace}</code> will be created."
|
|
1340
|
+
requiresImagePullSecret: "This Chart requires an Image Pull Secret in order for images to be succesfully pulled."
|
|
1341
|
+
dontUseDefaultImagePullSecret: "Manually select an Image Pull Secret or create a new one with Username/Password"
|
|
1342
|
+
generatedNewImagePullSecret: "A new Image Pull Secret <b>{ imagePullSecretName }</b> will be generated"
|
|
1343
|
+
generatedImagePullSecretBannerFromPreviousAuth: "A new Image Pull Secret <b>{ imagePullSecretName }</b> will be generated from the Repository secret <b>{ repoAuthenticationName }</b>."
|
|
1344
|
+
usePreviouslyGeneratedImagePullSecretBanner: "Image Pull Secret <b>{ imagePullSecretName }</b> was already created previously from the Repository secret <b>{ repoAuthenticationName }</b> and will be used."
|
|
1335
1345
|
clusterTplVersion:
|
|
1336
1346
|
label: Version
|
|
1337
1347
|
subtext: Select a version of the template
|
|
@@ -1381,11 +1391,21 @@ catalog:
|
|
|
1381
1391
|
rancher-partner-charts: Partners
|
|
1382
1392
|
rancher-rke2-charts: RKE2
|
|
1383
1393
|
rancher-ui-plugins: Rancher Extensions
|
|
1394
|
+
suse-application-collection: SUSE App Collection
|
|
1384
1395
|
|
|
1385
1396
|
target:
|
|
1386
|
-
git:
|
|
1387
|
-
|
|
1388
|
-
|
|
1397
|
+
git:
|
|
1398
|
+
title: Git Repository
|
|
1399
|
+
description: Git repository containing Helm charts or cluster templates
|
|
1400
|
+
http:
|
|
1401
|
+
title: Helm Repository
|
|
1402
|
+
description: HTTP(S) URL pointing to a Helm chart repository index
|
|
1403
|
+
oci:
|
|
1404
|
+
title: OCI Repository
|
|
1405
|
+
description: OCI-compliant registry hosting Helm charts as artifacts
|
|
1406
|
+
suseAppCollection:
|
|
1407
|
+
title: SUSE App Collection
|
|
1408
|
+
description: Curated, enterprise-ready applications from SUSE Application Collection
|
|
1389
1409
|
label: Target
|
|
1390
1410
|
url:
|
|
1391
1411
|
label: Index URL
|
|
@@ -1592,7 +1612,7 @@ cluster:
|
|
|
1592
1612
|
nodeLabel:
|
|
1593
1613
|
title: Node Labels
|
|
1594
1614
|
label: Add Label
|
|
1595
|
-
ipv6: "It looks like this cluster uses IPv6 networking: <code>Node Private IP</code> should be set to the cluster's
|
|
1615
|
+
ipv6: "It looks like this cluster uses IPv6 networking: <code>Node Private IP</code> should be set to the cluster's IPv6 address."
|
|
1596
1616
|
registrationCommand:
|
|
1597
1617
|
label: Registration Command
|
|
1598
1618
|
linuxDetail: Run this command on each of the existing Linux machines you want to register.
|
|
@@ -2101,19 +2121,19 @@ cluster:
|
|
|
2101
2121
|
httpTokens: Use tokens for metadata
|
|
2102
2122
|
tagTitle: EC2 Tags
|
|
2103
2123
|
enableIpv6:
|
|
2104
|
-
label: Enable
|
|
2105
|
-
description: "
|
|
2124
|
+
label: Enable Dual-Stack
|
|
2125
|
+
description: "To use dual-stack networking, you will need to update the <a aria-label='scroll to the networking section in cluster configuration' href=\"#networking\">Network Stack Preference Order</a> to <b>DUAL</b> stack. For an IPv6-only cluster, check \"Enable IPv6\" and update the stack preference to <b>IPv6</b>."
|
|
2106
2126
|
ipv6AddressCount:
|
|
2107
2127
|
label: IPv6 Address Count
|
|
2108
2128
|
tooltip: Specifies the number of IPv6 addresses to assign to the network interface
|
|
2109
2129
|
error: IPv6 Address Count must be greater than 0 when using an IPv6 vpc or subnet.
|
|
2110
2130
|
enablePrimaryIpv6:
|
|
2111
|
-
label: Enable Static Primary
|
|
2112
|
-
description: This
|
|
2131
|
+
label: Enable Static Primary IPv6
|
|
2132
|
+
description: This designates the first assigned IPv6 address as the primary address, ensuring a consistent, non-changing IPv6 address for the instance. This option does not control whether IPv6 addresses are assigned.
|
|
2113
2133
|
ipv6AddressOnly:
|
|
2114
|
-
label:
|
|
2134
|
+
label: Enable IPv6
|
|
2115
2135
|
httpProtocolIpv6:
|
|
2116
|
-
label:
|
|
2136
|
+
label: Enable IPv6 endpoint for instance metadata service
|
|
2117
2137
|
ipv6ValidationWarning: When one pool uses an IPv6 or dual-stack subnet/vpc, all pools must use an IPv6 or dual-stack subnet/vpc.
|
|
2118
2138
|
pnap:
|
|
2119
2139
|
serverLocation:
|
|
@@ -2203,6 +2223,7 @@ cluster:
|
|
|
2203
2223
|
tooltip: 'Additional Kubernetes Manifest YAML to be applied to the cluster on startup.'
|
|
2204
2224
|
agentConfig:
|
|
2205
2225
|
tabs:
|
|
2226
|
+
agentsScheduling: Agents Scheduling
|
|
2206
2227
|
cluster: Cluster Agent
|
|
2207
2228
|
fleet: Fleet Agent
|
|
2208
2229
|
groups:
|
|
@@ -2212,13 +2233,19 @@ cluster:
|
|
|
2212
2233
|
podTolerations: Tolerations
|
|
2213
2234
|
podRequestsAndLimits: Requests and Limits
|
|
2214
2235
|
schedulingCustomization: Scheduling Customization
|
|
2236
|
+
agentsScheduling:
|
|
2237
|
+
text: Ensure that cluster- and/or fleet-agent pods are not evicted due to node pressure, resource constraints or scheduler policies When enabled, these settings may be configured in the
|
|
2238
|
+
textLink: Global Settings
|
|
2239
|
+
label: 'Prevent agent pod eviction for:'
|
|
2215
2240
|
subGroups:
|
|
2216
2241
|
podAffinityAnti: Pod Affinity/Anti-Affinity
|
|
2217
2242
|
nodeAffinity: Node Affinity
|
|
2218
|
-
|
|
2219
|
-
|
|
2220
|
-
|
|
2221
|
-
|
|
2243
|
+
agentsScheduling:
|
|
2244
|
+
cluster: Cluster Agent
|
|
2245
|
+
fleet: Fleet Agent
|
|
2246
|
+
label: Prevent Rancher {agent} pod eviction
|
|
2247
|
+
description: This ensures that the {agent} pod is not evicted due to node pressure, resource constraints or scheduler policies.
|
|
2248
|
+
banner: This feature is currently configured with settings which differ to the default Global Settings. Enable the checkbox below to overwrite the current settings with the default Global Settings.
|
|
2222
2249
|
innerCheckbox: Apply global settings for Priority Class and Pod Disruption Budget
|
|
2223
2250
|
banners:
|
|
2224
2251
|
advanced: These are advanced configuration options. Generally, they should be left as-is.
|
|
@@ -2267,6 +2294,7 @@ cluster:
|
|
|
2267
2294
|
other { {pool_name}: The provided values for {fields} were not found in the list of expected values. This can happen with clusters provisioned outside of Rancher or when options for the provider have changed. }
|
|
2268
2295
|
}
|
|
2269
2296
|
rke1DeprecationMessage: 'Rancher Kubernetes Engine (RKE / RKE1) has reached end of life and these clusters are no longer supported. We recommend replatforming RKE1 clusters to RKE2 to ensure continued support and security updates. Learn more about the transition <a href="https://www.suse.com/support/kb/doc/?id=000021518" target="_blank" rel="noopener noreferrer nofollow">here</a>.'
|
|
2297
|
+
nginxDeprecated: The NGINX controller is deprecated and will be removed in upcoming versions
|
|
2270
2298
|
rke1Unsupported: RKE1 Clusters are no longer supported
|
|
2271
2299
|
|
|
2272
2300
|
architecture:
|
|
@@ -2454,6 +2482,16 @@ cluster:
|
|
|
2454
2482
|
editYamlMachinePool:
|
|
2455
2483
|
title: Save Machine Configurations
|
|
2456
2484
|
body: Machine Configurations define how machines in Pools are deployed.<br><br> They will be saved upfront to ensure valid Cluster YAML can be saved.
|
|
2485
|
+
ipv6Warning:
|
|
2486
|
+
title: Verify IPv6 Settings
|
|
2487
|
+
body: The machine pools in this cluster are configured to use IPv6 networks, but the cluster's networking settings may not support it.
|
|
2488
|
+
stackPrefInvalid: The <a href="{docsBase}/reference-guides/cluster-configuration/rancher-server-configuration/rke2-cluster-configuration#stack-preference" target="_blank" rel="noopener noreferrer nofollow" aria-label="rke2 documentation for the stack preference setting">Stack Preference</a> should be set to "Dual" or "IPv6" to use dual-stack or IPv6-only networking, respectively.
|
|
2489
|
+
flannelMasqInvalid: K3s uses the Flannel cni plugin by default. Enabling Flannel Masq is generally advised when using IPv6 networking.
|
|
2490
|
+
cidrInvalidRke2: To enable dual-stack networking in RKE2 clusters, you must define valid dual-stack cluster and service CIDR ranges.
|
|
2491
|
+
cidrInvalidK3s: To enable dual-stack or IPv6-only networking in K3s clusters, you must define valid dual-stack or IPv6 cluster and service CIDR ranges.
|
|
2492
|
+
readMoreK3s: <a href="https://docs.k3s.io/networking/basic-network-options#dual-stack-ipv4--ipv6-networking" target="_blank" rel="noopener noreferrer nofollow" aria-label="k3s dual-stack networking documentation">Learn more about K3s networking</a>
|
|
2493
|
+
readMoreRke2: <a href="https://docs.rke2.io/networking/basic_network_options#ipv6-setup" target="_blank" rel="noopener noreferrer nofollow" aria-label="rke2 ipv6 networking documentation">Learn more about RKE2 networking</a>
|
|
2494
|
+
verifySettings: 'Before continuing, please verify the following settings:'
|
|
2457
2495
|
snapshots:
|
|
2458
2496
|
suffix: Snapshots per node
|
|
2459
2497
|
s3Suffix: Snapshots
|
|
@@ -2580,12 +2618,11 @@ cluster:
|
|
|
2580
2618
|
label: Endpoint CA Cert
|
|
2581
2619
|
stackPreference:
|
|
2582
2620
|
label: Stack Preference
|
|
2583
|
-
description:
|
|
2621
|
+
description: Stack preference determines the networking stack used by the cluster. IPv4 uses <code>127.0.0.1</code>, Dual-Stack uses <code>localhost</code> and IPv6 uses <code>[::1]</code>. Read more about <a href="https://ranchermanager.docs.rancher.com/reference-guides/cluster-configuration/rancher-server-configuration/rke2-cluster-configuration#stack-preference" target="_blank" rel="noopener noreferrer nofollow" >RKE2</a> and <a href="https://ranchermanager.docs.rancher.com/reference-guides/cluster-configuration/rancher-server-configuration/k3s-cluster-configuration#stack-preference" target="_blank" rel="noopener noreferrer nofollow" >K3s</a> networking in the Rancher documentation.
|
|
2584
2622
|
options:
|
|
2585
2623
|
ipv4: IPv4
|
|
2586
2624
|
ipv6: IPv6
|
|
2587
|
-
dual: Dual
|
|
2588
|
-
errorNeedsIpv6: Stack preference must be set to dual-stack or ipv6 if using ipv6 networking in nodepools.
|
|
2625
|
+
dual: Dual
|
|
2589
2626
|
k3s:
|
|
2590
2627
|
flannelMasq:
|
|
2591
2628
|
title: IPv6 NAT
|
|
@@ -2614,6 +2651,48 @@ cluster:
|
|
|
2614
2651
|
rke1:
|
|
2615
2652
|
local: local
|
|
2616
2653
|
s3: s3
|
|
2654
|
+
ingress:
|
|
2655
|
+
title: Ingress
|
|
2656
|
+
enableIngress: Install Ingress controller to enable external routing
|
|
2657
|
+
nginx:
|
|
2658
|
+
header: Ingress-NGINX
|
|
2659
|
+
content: Choose this only if your workloads are not yet ready for Traefik.
|
|
2660
|
+
dual:
|
|
2661
|
+
header: Dual Mode
|
|
2662
|
+
content: Use this to safely test and migrate traffic from Ingress-NGINX to Traefik.
|
|
2663
|
+
traefik:
|
|
2664
|
+
header: Traefik
|
|
2665
|
+
content: The new default provider for high-performance routing and modern feature support.
|
|
2666
|
+
recommended: Recommended
|
|
2667
|
+
legacy: Legacy
|
|
2668
|
+
migration: Migration
|
|
2669
|
+
learnMore:
|
|
2670
|
+
label: Learn more
|
|
2671
|
+
showAdvanced: Show advanced configuration
|
|
2672
|
+
hideAdvanced: Hide advanced configuration
|
|
2673
|
+
configurationOptions:
|
|
2674
|
+
title: Configuration Options
|
|
2675
|
+
compatibilityMode: Enable Traefik Ingress NGINX compatibility mode for annotations
|
|
2676
|
+
traefik:
|
|
2677
|
+
http: Traefik HTTP
|
|
2678
|
+
https: Traefik HTTPS
|
|
2679
|
+
nginx:
|
|
2680
|
+
http: Ingress-NGINX HTTP
|
|
2681
|
+
https: Ingress-NGINX HTTPS
|
|
2682
|
+
banners:
|
|
2683
|
+
transitioning:
|
|
2684
|
+
label: Rancher is transitioning to Traefik as the default provider. While Ingress-NGINX remains available for migration purposes, we recommend moving workloads to Traefik to ensure long-term compatibility and support.
|
|
2685
|
+
disabled:
|
|
2686
|
+
label: Without an Ingress controller, services in this cluster will not be reachable via external URLs or hostnames. You will need to manually configure an alternative routing solution to expose your workloads.
|
|
2687
|
+
selected:
|
|
2688
|
+
ingress-nginx:
|
|
2689
|
+
label: Ingress-NGINX is now deprecated and will be removed in a future release. To avoid service interruptions, please begin migrating your Ingress resources to Traefik. Please review our <docsUrl>migration documentation</docsUrl>.
|
|
2690
|
+
traefik:
|
|
2691
|
+
label: Before switching to Traefik, please review our <docsUrl>migration documentation</docsUrl> to ensure your Ingress resources are updated to support Traefik’s configuration requirements.
|
|
2692
|
+
dual:
|
|
2693
|
+
label: Please review our <docsUrl>migration documentation</docsUrl> to ensure your current workloads and annotations are compatible. Taking this step now helps prevent unexpected routing issues during the transition.
|
|
2694
|
+
validation:
|
|
2695
|
+
portsMatch: Traefik and Ingress-NGINX ports cannot match
|
|
2617
2696
|
tabs:
|
|
2618
2697
|
ace: Authorized Endpoint
|
|
2619
2698
|
addOnAdditionalManifest: Additional Manifest
|
|
@@ -2642,6 +2721,8 @@ cluster:
|
|
|
2642
2721
|
v2: RKE2/K3s
|
|
2643
2722
|
validation:
|
|
2644
2723
|
iamInstanceProfileName: If the Amazon cloud provider is selected the "IAM Instance Profile Name" must be defined for each Machine Pool
|
|
2724
|
+
capi:
|
|
2725
|
+
notSupported: Managing clusters provisioned using CAPI infrastructure providers via the UI is currently limited to Rancher Turtles provisioned clusters.
|
|
2645
2726
|
|
|
2646
2727
|
clusterIndexPage:
|
|
2647
2728
|
hardwareResourceGauge:
|
|
@@ -2754,7 +2835,7 @@ drivers:
|
|
|
2754
2835
|
kontainer:
|
|
2755
2836
|
title: Cluster Drivers
|
|
2756
2837
|
emberDeprecationMessage: 'Support for UI Plugins (based on Ember) for cluster and node drivers was deprecated in Rancher 2.11.0 and will be removed in a future release. These need to be migrated to the new <a href="https://extensions.rancher.io" target="_blank" rel="noopener noreferrer nofollow">UI Extensions framework</a>.'
|
|
2757
|
-
|
|
2838
|
+
refreshError: 'Error refreshing cluster drivers: {error}'
|
|
2758
2839
|
node:
|
|
2759
2840
|
title: Node Drivers
|
|
2760
2841
|
add:
|
|
@@ -5785,6 +5866,7 @@ promptForceRemove:
|
|
|
5785
5866
|
|
|
5786
5867
|
promptScaleMachineDown:
|
|
5787
5868
|
attemptingToRemove: "You are attempting to delete {count} {type}"
|
|
5869
|
+
attemptingToScaleDown: "You are attempting to scale down {type}"
|
|
5788
5870
|
retainedMachine1: At least one Machine must exist for roles Control Plane and Etcd.
|
|
5789
5871
|
retainedMachine2: <b>{ name }</b> will remain
|
|
5790
5872
|
scaling: |-
|
|
@@ -6154,6 +6236,13 @@ secret:
|
|
|
6154
6236
|
warnings:
|
|
6155
6237
|
expiring: "{count} {count, plural, =1 {Certificate expires soon} other {Certificates expire soon}}"
|
|
6156
6238
|
expired: "{count} {count, plural, =1 {Certificate has expired} other {Certificates have expired}}"
|
|
6239
|
+
projectScoped:
|
|
6240
|
+
tooltip:
|
|
6241
|
+
source: "Project Scoped Secret (for Project \"{project}\" in cluster \"{cluster}\")"
|
|
6242
|
+
copy: "Managed via Project Scoped Secret (\"{secret}\" in Project \"{project}\")"
|
|
6243
|
+
origin:
|
|
6244
|
+
source: "Project Secret"
|
|
6245
|
+
copy: "Via Project Secret"
|
|
6157
6246
|
data: Data
|
|
6158
6247
|
registry:
|
|
6159
6248
|
address: Registry
|
|
@@ -6243,6 +6332,7 @@ secret:
|
|
|
6243
6332
|
|
|
6244
6333
|
selectOrCreateAuthSecret:
|
|
6245
6334
|
label: Authentication
|
|
6335
|
+
imagePullSecret: Image Pull Secret
|
|
6246
6336
|
options:
|
|
6247
6337
|
none: None
|
|
6248
6338
|
basic: HTTP Basic Auth
|
|
@@ -6267,6 +6357,8 @@ selectOrCreateAuthSecret:
|
|
|
6267
6357
|
createBasic: Create an HTTP Basic Auth Secret
|
|
6268
6358
|
createS3: Create an S3-Compatible Auth Secret
|
|
6269
6359
|
createRKE: Create an RKE Auth Config Secret
|
|
6360
|
+
createImagePullSecretBasedOnAuth: Create an Image Pull Secret based on Authentication Secret
|
|
6361
|
+
createImagePullSecret: Create a new Image Pull Secret with new Username/Password
|
|
6270
6362
|
|
|
6271
6363
|
serviceAccount:
|
|
6272
6364
|
automount: Automount Service Account Token
|
|
@@ -6765,6 +6857,7 @@ storageClass:
|
|
|
6765
6857
|
tooltip: By default the default storage class on the host Harvester cluster is used.
|
|
6766
6858
|
|
|
6767
6859
|
tableHeaders:
|
|
6860
|
+
isLegacy: Legacy
|
|
6768
6861
|
assuredConcurrencyShares: Assured Concurrency Shares
|
|
6769
6862
|
autoscaler: Autoscaler
|
|
6770
6863
|
accessKey: Access Key
|
|
@@ -6924,6 +7017,7 @@ tableHeaders:
|
|
|
6924
7017
|
reclaimPolicy: Reclaim Policy
|
|
6925
7018
|
registrationNamespace: Registration Namespace
|
|
6926
7019
|
repo: Repo
|
|
7020
|
+
repoType: Repo Type
|
|
6927
7021
|
repositories: Repositories
|
|
6928
7022
|
repoName: Repository Name
|
|
6929
7023
|
reposReady: Git Repos Ready
|
|
@@ -6946,10 +7040,8 @@ tableHeaders:
|
|
|
6946
7040
|
selector: Selector
|
|
6947
7041
|
secrets: Secrets
|
|
6948
7042
|
secret:
|
|
6949
|
-
|
|
6950
|
-
|
|
6951
|
-
project-scoped: Project Secret
|
|
6952
|
-
project-scoped-tooltip: This Project Scoped Secret will create matching Secrets in the Namespaces it contains
|
|
7043
|
+
origin: Origin
|
|
7044
|
+
originTooltip: "Shows if a secret has been created or managed via another Project Scoped Secret. Read the Project Scoped Secret documentation to learn more about this Rancher concept"
|
|
6953
7045
|
schedule: Schedule
|
|
6954
7046
|
service: Service
|
|
6955
7047
|
serviceAccounts: Service Accounts
|
|
@@ -8705,6 +8797,10 @@ advancedSettings:
|
|
|
8705
8797
|
moreActions: More actions for setting - { setting }
|
|
8706
8798
|
label: Edit Setting
|
|
8707
8799
|
changeSetting: "Change Setting:"
|
|
8800
|
+
agentConfigBanner:
|
|
8801
|
+
text: Editing this value will not change the value set in running clusters! In order to update a running cluster to use the new values, edit the cluster and click on “Apply global settings for Priority Class and Pod Disruption Budget” in the {agent} Agent configuration tab.
|
|
8802
|
+
cluster: Cluster
|
|
8803
|
+
fleet: Fleet
|
|
8708
8804
|
trueOption: "True"
|
|
8709
8805
|
falseOption: "False"
|
|
8710
8806
|
value: Value
|
|
@@ -9005,6 +9101,13 @@ resourceQuota:
|
|
|
9005
9101
|
namespace: 'This Namespace:'
|
|
9006
9102
|
available: 'Available:'
|
|
9007
9103
|
max: 'Total:'
|
|
9104
|
+
ariaLabel:
|
|
9105
|
+
grid: Resource Quotas
|
|
9106
|
+
resourceType: 'Resource Type, row {row}'
|
|
9107
|
+
resourceIdentifier: 'Resource Identifier, row {row}'
|
|
9108
|
+
projectLimit: 'Project Limit, row {row}'
|
|
9109
|
+
namespaceDefaultLimit: 'Namespace Default Limit, row {row}'
|
|
9110
|
+
remove: 'Remove {identifier}'
|
|
9008
9111
|
customLinks:
|
|
9009
9112
|
displayTitle: Links
|
|
9010
9113
|
label: Home Links
|
|
@@ -9260,6 +9363,7 @@ component:
|
|
|
9260
9363
|
podsCard:
|
|
9261
9364
|
title: Pods
|
|
9262
9365
|
ariaResourceName: pods
|
|
9366
|
+
noPods: There are no pods currently present.
|
|
9263
9367
|
jobsCard:
|
|
9264
9368
|
title: Jobs
|
|
9265
9369
|
ariaResourceName: jobs
|
|
@@ -776,7 +776,9 @@ export default {
|
|
|
776
776
|
class="resource-container cru__content"
|
|
777
777
|
:style="[minHeight ? { 'min-height': minHeight } : {}]"
|
|
778
778
|
>
|
|
779
|
-
<slot
|
|
779
|
+
<slot name="single">
|
|
780
|
+
<slot />
|
|
781
|
+
</slot>
|
|
780
782
|
</div>
|
|
781
783
|
<slot name="form-footer">
|
|
782
784
|
<CruResourceFooter
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
<script>
|
|
2
2
|
import { mapGetters, useStore } from 'vuex';
|
|
3
3
|
import ResourceTable, { defaultTableSortGenerationFn } from '@shell/components/ResourceTable';
|
|
4
|
-
import {
|
|
5
|
-
STATE, AGE, NAME, NS_SNAPSHOT_QUOTA, DESCRIPTION
|
|
4
|
+
import {
|
|
5
|
+
STATE, AGE, NAME, NS_SNAPSHOT_QUOTA, DESCRIPTION, PROJECT_NAMESPACES_NAME
|
|
6
6
|
} from '@shell/config/table-headers';
|
|
7
7
|
import { uniq } from '@shell/utils/array';
|
|
8
8
|
import { MANAGEMENT, NAMESPACE, VIRTUAL_TYPES, HCI } from '@shell/config/types';
|
|
@@ -122,13 +122,11 @@ export default {
|
|
|
122
122
|
return this.$store.getters['currentProduct'].inStore === HARVESTER;
|
|
123
123
|
},
|
|
124
124
|
headers() {
|
|
125
|
-
|
|
126
|
-
STATE,
|
|
127
|
-
NAME,
|
|
128
|
-
DESCRIPTION
|
|
129
|
-
];
|
|
125
|
+
let headers;
|
|
130
126
|
|
|
131
127
|
if (this.groupPreference === 'none') {
|
|
128
|
+
headers = [STATE, NAME, DESCRIPTION];
|
|
129
|
+
|
|
132
130
|
const projectHeader = {
|
|
133
131
|
name: 'project',
|
|
134
132
|
label: this.t('tableHeaders.project'),
|
|
@@ -137,6 +135,8 @@ export default {
|
|
|
137
135
|
};
|
|
138
136
|
|
|
139
137
|
headers.push(projectHeader);
|
|
138
|
+
} else {
|
|
139
|
+
headers = [STATE, PROJECT_NAMESPACES_NAME, DESCRIPTION];
|
|
140
140
|
}
|
|
141
141
|
|
|
142
142
|
if (this.isHarvester && this.harvesterResourceQuotaSchema) {
|
|
@@ -178,12 +178,12 @@ export default {
|
|
|
178
178
|
rowsWithFakeNamespaces() {
|
|
179
179
|
const fakeRows = this.projectsWithoutNamespaces.map((project) => {
|
|
180
180
|
return {
|
|
181
|
-
groupById:
|
|
182
|
-
isFake:
|
|
183
|
-
mainRowKey:
|
|
184
|
-
|
|
181
|
+
groupById: `${ ('resourceTable.groupLabel.notInAProject') }-${ project.id }`,
|
|
182
|
+
isFake: true,
|
|
183
|
+
mainRowKey: project.id,
|
|
184
|
+
projectNameDisplay: project.spec?.displayName, // Enable filtering by the project name
|
|
185
185
|
project,
|
|
186
|
-
availableActions:
|
|
186
|
+
availableActions: []
|
|
187
187
|
};
|
|
188
188
|
});
|
|
189
189
|
|
package/components/IconOrSvg.vue
CHANGED
|
@@ -18,9 +18,9 @@
|
|
|
18
18
|
*/
|
|
19
19
|
import { Solver } from '@shell/utils/svg-filter';
|
|
20
20
|
import { colorToRgb, mapStandardColors, normalizeHex } from '@shell/utils/color';
|
|
21
|
+
import { mapGetters } from 'vuex';
|
|
21
22
|
|
|
22
23
|
const filterCache = {};
|
|
23
|
-
const cssCache = {};
|
|
24
24
|
|
|
25
25
|
const colors = {
|
|
26
26
|
header: {
|
|
@@ -33,7 +33,7 @@ const colors = {
|
|
|
33
33
|
},
|
|
34
34
|
primary: {
|
|
35
35
|
color: '--on-tertiary',
|
|
36
|
-
hover: '--
|
|
36
|
+
hover: '--tertiary-hover-app-bar',
|
|
37
37
|
colorFallback: '--on-tertiary',
|
|
38
38
|
hoverFallback: '--primary-hover-text',
|
|
39
39
|
active: '--on-active',
|
|
@@ -63,7 +63,12 @@ export default {
|
|
|
63
63
|
},
|
|
64
64
|
|
|
65
65
|
data() {
|
|
66
|
-
return {
|
|
66
|
+
return {
|
|
67
|
+
className: '',
|
|
68
|
+
mainFilter: null,
|
|
69
|
+
hoverFilter: null,
|
|
70
|
+
activeFilter: null,
|
|
71
|
+
};
|
|
67
72
|
},
|
|
68
73
|
|
|
69
74
|
created() {
|
|
@@ -72,6 +77,18 @@ export default {
|
|
|
72
77
|
}
|
|
73
78
|
},
|
|
74
79
|
|
|
80
|
+
computed: {
|
|
81
|
+
...mapGetters({
|
|
82
|
+
brand: 'management/brand',
|
|
83
|
+
theme: 'prefs/theme',
|
|
84
|
+
})
|
|
85
|
+
},
|
|
86
|
+
|
|
87
|
+
watch: {
|
|
88
|
+
brand: 'recomputeColor',
|
|
89
|
+
theme: 'recomputeColor',
|
|
90
|
+
},
|
|
91
|
+
|
|
75
92
|
methods: {
|
|
76
93
|
getComputedStyleFor(cssVar, fallback) {
|
|
77
94
|
const value = window.getComputedStyle(document.body).getPropertyValue(cssVar).trim();
|
|
@@ -86,11 +103,11 @@ export default {
|
|
|
86
103
|
|
|
87
104
|
const solver = new Solver(rgb);
|
|
88
105
|
const res = solver.solve();
|
|
89
|
-
const
|
|
106
|
+
const filterVal = res?.filterVal;
|
|
90
107
|
|
|
91
|
-
filterCache[cacheKey] =
|
|
108
|
+
filterCache[cacheKey] = filterVal;
|
|
92
109
|
|
|
93
|
-
return
|
|
110
|
+
return filterVal;
|
|
94
111
|
},
|
|
95
112
|
|
|
96
113
|
setColor() {
|
|
@@ -111,43 +128,23 @@ export default {
|
|
|
111
128
|
|
|
112
129
|
const className = `svg-icon-${ uiColorStr }-${ hoverColorStr }`;
|
|
113
130
|
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
const activeFilter = this.resolveColorFilter(activeColor, activeColorRGB);
|
|
118
|
-
|
|
119
|
-
// Add stylesheet (added as global styles)
|
|
120
|
-
const styles = `
|
|
121
|
-
img.${ className } {
|
|
122
|
-
${ mainFilter };
|
|
123
|
-
}
|
|
124
|
-
img.${ className }:hover {
|
|
125
|
-
${ hoverFilter };
|
|
126
|
-
}
|
|
127
|
-
button:hover > img.${ className } {
|
|
128
|
-
${ hoverFilter };
|
|
129
|
-
}
|
|
130
|
-
li:hover > img.${ className } {
|
|
131
|
-
${ hoverFilter };
|
|
132
|
-
}
|
|
133
|
-
a.option:hover > img.${ className } {
|
|
134
|
-
${ hoverFilter };
|
|
135
|
-
}
|
|
136
|
-
a.option.active-menu-link > img.${ className } {
|
|
137
|
-
${ activeFilter };
|
|
138
|
-
}
|
|
139
|
-
`;
|
|
140
|
-
|
|
141
|
-
const styleSheet = document.createElement('style');
|
|
142
|
-
|
|
143
|
-
styleSheet.innerText = styles;
|
|
144
|
-
document.head.appendChild(styleSheet);
|
|
145
|
-
|
|
146
|
-
cssCache[className] = true;
|
|
147
|
-
}
|
|
131
|
+
this.hoverFilter = this.resolveColorFilter(hoverColor, hoverColorRGB);
|
|
132
|
+
this.mainFilter = this.resolveColorFilter(uiColor, uiColorRGB);
|
|
133
|
+
this.activeFilter = this.resolveColorFilter(activeColor, activeColorRGB);
|
|
148
134
|
|
|
149
135
|
this['className'] = className;
|
|
150
|
-
}
|
|
136
|
+
},
|
|
137
|
+
|
|
138
|
+
recomputeColor() {
|
|
139
|
+
if (!this.src) {
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
this.mainFilter = null;
|
|
144
|
+
this.hoverFilter = null;
|
|
145
|
+
this.activeFilter = null;
|
|
146
|
+
this.setColor();
|
|
147
|
+
},
|
|
151
148
|
}
|
|
152
149
|
};
|
|
153
150
|
</script>
|
|
@@ -172,8 +169,30 @@ export default {
|
|
|
172
169
|
</template>
|
|
173
170
|
|
|
174
171
|
<style lang="scss" scoped>
|
|
175
|
-
.svg-icon {
|
|
172
|
+
img.svg-icon {
|
|
173
|
+
filter: v-bind(mainFilter);
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
button:hover > img.svg-icon,
|
|
177
|
+
li:hover > img.svg-icon {
|
|
178
|
+
filter: v-bind(hoverFilter);
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
.side-menu .category div a > img.svg-icon {
|
|
176
182
|
height: 24px;
|
|
177
183
|
width: 24px;
|
|
184
|
+
filter: v-bind(mainFilter);
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
.side-menu .category div a:hover > img.svg-icon {
|
|
188
|
+
filter: v-bind(hoverFilter);
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
.side-menu .category div a.active-menu-link > img.svg-icon {
|
|
192
|
+
filter: v-bind(activeFilter);
|
|
193
|
+
|
|
194
|
+
&:hover {
|
|
195
|
+
filter: v-bind(activeFilter);
|
|
196
|
+
}
|
|
178
197
|
}
|
|
179
198
|
</style>
|