@rancher/shell 0.3.4 → 0.3.6

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.
Files changed (289) hide show
  1. package/assets/images/providers/outscale.svg +19 -0
  2. package/assets/styles/app.scss +1 -1
  3. package/assets/styles/base/_basic.scss +18 -0
  4. package/assets/styles/base/_mixins.scss +0 -11
  5. package/assets/styles/base/_variables.scss +2 -4
  6. package/assets/styles/fonts/_fontstack.scss +11 -11
  7. package/assets/styles/global/_button.scss +12 -2
  8. package/assets/styles/vendor/vue-js-modal.scss +3 -3
  9. package/assets/translations/en-us.yaml +113 -22
  10. package/assets/translations/zh-hans.yaml +113 -24
  11. package/babel.config.js +13 -0
  12. package/chart/gatekeeper.vue +78 -0
  13. package/chart/istio.vue +135 -112
  14. package/chart/logging/index.vue +13 -4
  15. package/chart/monitoring/index.vue +15 -5
  16. package/chart/monitoring/steps/uninstall-v1.vue +2 -2
  17. package/chart/rancher-backup/index.vue +10 -3
  18. package/cloud-credential/aws.vue +1 -1
  19. package/cloud-credential/digitalocean.vue +1 -1
  20. package/cloud-credential/gcp.vue +1 -1
  21. package/cloud-credential/generic.vue +2 -2
  22. package/cloud-credential/linode.vue +1 -1
  23. package/cloud-credential/pnap.vue +1 -1
  24. package/components/ActionMenu.vue +3 -4
  25. package/components/AssignTo.vue +1 -1
  26. package/components/AsyncButton.vue +1 -1
  27. package/components/BannerGraphic.vue +1 -1
  28. package/components/BrandImage.vue +1 -4
  29. package/components/ButtonDropdown.vue +2 -3
  30. package/components/Carousel.vue +85 -37
  31. package/components/ChartPsp.vue +76 -0
  32. package/components/CruResource.vue +6 -2
  33. package/components/DashboardMetrics.vue +12 -10
  34. package/components/DetailText.vue +1 -1
  35. package/components/DisableAuthProviderModal.vue +1 -1
  36. package/components/EmberPage.vue +1 -1
  37. package/components/EtcdInfoBanner.vue +12 -7
  38. package/components/ExplorerMembers.vue +101 -6
  39. package/components/ExplorerProjectsNamespaces.vue +46 -3
  40. package/components/FileDiff.vue +6 -7
  41. package/components/GrafanaDashboard.vue +27 -23
  42. package/components/LazyImage.vue +10 -12
  43. package/components/LogItem.vue +1 -1
  44. package/components/Markdown.vue +1 -1
  45. package/components/PromptRemove.vue +2 -2
  46. package/components/PromptRestore.vue +1 -1
  47. package/components/ResourceDetail/Masthead.vue +16 -0
  48. package/components/ResourceDetail/index.vue +21 -4
  49. package/components/ResourceList/index.vue +1 -1
  50. package/components/ResourceTable.vue +4 -1
  51. package/components/SingleClusterInfo.vue +2 -2
  52. package/components/SortableTable/THead.vue +1 -1
  53. package/components/SortableTable/index.vue +28 -13
  54. package/components/SortableTable/selection.js +58 -50
  55. package/components/Wizard.vue +4 -2
  56. package/components/__tests__/AsyncButton.test.ts +3 -1
  57. package/components/__tests__/ChartPsp.test.ts +75 -0
  58. package/components/__tests__/CruResource.test.ts +3 -1
  59. package/components/auth/Principal.vue +1 -1
  60. package/components/auth/RoleDetailEdit.vue +2 -2
  61. package/components/fleet/FleetBundles.vue +3 -1
  62. package/components/fleet/FleetClusters.vue +1 -2
  63. package/components/fleet/FleetIntro.vue +9 -1
  64. package/components/fleet/FleetNoWorkspaces.vue +62 -0
  65. package/components/fleet/FleetSummary.vue +7 -1
  66. package/components/form/HookOption.vue +14 -10
  67. package/components/form/LabeledSelect.vue +14 -11
  68. package/components/form/Labels.vue +32 -27
  69. package/components/form/MatchExpressions.vue +19 -4
  70. package/components/form/Members/ClusterPermissionsEditor.vue +32 -7
  71. package/components/form/NameNsDescription.vue +32 -46
  72. package/components/form/ProjectMemberEditor.vue +46 -21
  73. package/components/form/ResourceSelector.vue +1 -1
  74. package/components/form/SecretSelector.vue +5 -1
  75. package/components/form/ServiceNameSelect.vue +1 -1
  76. package/components/form/SimpleSecretSelector.vue +9 -9
  77. package/components/form/Tolerations.vue +4 -1
  78. package/components/form/ValueFromResource.vue +14 -9
  79. package/components/form/WorkloadPorts.vue +2 -2
  80. package/components/form/__tests__/LabeledSelect.test.ts +138 -0
  81. package/components/form/__tests__/NameNsDescription.ts +59 -0
  82. package/components/formatter/InternalExternalIP.vue +6 -0
  83. package/components/formatter/InvolvedObjectLink.vue +54 -0
  84. package/components/formatter/Link.vue +20 -4
  85. package/components/formatter/LinkName.vue +6 -1
  86. package/components/formatter/ServiceTargets.vue +1 -1
  87. package/components/formatter/WorkloadHealthScale.vue +8 -2
  88. package/components/nav/Group.vue +2 -2
  89. package/components/nav/NamespaceFilter.vue +23 -11
  90. package/components/nav/TopLevelMenu.vue +2 -4
  91. package/components/nav/Type.vue +1 -1
  92. package/components/nav/WorkspaceSwitcher.vue +46 -5
  93. package/components/nuxt/nuxt-build-indicator.vue +143 -0
  94. package/components/nuxt/nuxt-child.js +122 -0
  95. package/components/nuxt/nuxt-error.vue +98 -0
  96. package/components/nuxt/nuxt-link.client.js +98 -0
  97. package/components/nuxt/nuxt-link.server.js +16 -0
  98. package/components/nuxt/nuxt-loading.vue +154 -0
  99. package/components/nuxt/nuxt.js +101 -0
  100. package/config/labels-annotations.js +17 -0
  101. package/config/middleware.js +12 -0
  102. package/config/product/auth.js +3 -2
  103. package/config/product/explorer.js +34 -6
  104. package/config/product/fleet.js +2 -0
  105. package/config/query-params.js +1 -0
  106. package/config/router.js +414 -0
  107. package/config/store.js +181 -0
  108. package/config/table-headers.js +54 -12
  109. package/config/types.js +18 -8
  110. package/config/uiplugins.js +30 -0
  111. package/content/docs/en-us/whats-new.md +10 -0
  112. package/content/docs/zh-hans/whats-new.md +11 -1
  113. package/core/plugin-routes.ts +23 -0
  114. package/core/plugin.ts +4 -2
  115. package/core/types.ts +258 -1
  116. package/creators/app/app.package.json +2 -1
  117. package/creators/app/files/.eslintrc.js +1 -1
  118. package/creators/app/files/babel.config.js +1 -18
  119. package/creators/app/files/tsconfig.json +0 -1
  120. package/creators/app/files/vue.config.js +6 -0
  121. package/creators/app/init +5 -5
  122. package/creators/pkg/files/.github/workflows/build-extension.yml +110 -0
  123. package/creators/pkg/files/tsconfig.json +0 -1
  124. package/creators/pkg/init +35 -4
  125. package/creators/pkg/pkg.package.json +3 -3
  126. package/creators/update/init +1 -1
  127. package/detail/constraints.gatekeeper.sh.constraint.vue +34 -17
  128. package/detail/fleet.cattle.io.clustergroup.vue +7 -1
  129. package/detail/fleet.cattle.io.gitrepo.vue +19 -11
  130. package/detail/harvesterhci.io.management.cluster.vue +3 -3
  131. package/detail/provisioning.cattle.io.cluster.vue +54 -12
  132. package/detail/workload/index.vue +3 -3
  133. package/dialog/AddClusterMemberDialog.vue +1 -1
  134. package/dialog/AddProjectMemberDialog.vue +2 -2
  135. package/dialog/AddonConfigConfirmationDialog.vue +27 -15
  136. package/dialog/DiagnosticTimingsDialog.vue +1 -1
  137. package/dialog/ForceMachineRemoveDialog.vue +1 -1
  138. package/dialog/GenericPrompt.vue +18 -6
  139. package/dialog/RotateEncryptionKeyDialog.vue +1 -1
  140. package/dialog/SaveAsRKETemplateDialog.vue +1 -1
  141. package/dialog/ScaleMachineDownDialog.vue +1 -1
  142. package/edit/auth/github.vue +8 -8
  143. package/edit/auth/googleoauth.vue +5 -5
  144. package/edit/auth/ldap/index.vue +1 -1
  145. package/edit/auth/oidc.vue +1 -1
  146. package/edit/auth/saml.vue +1 -1
  147. package/edit/cis.cattle.io.clusterscan.vue +1 -1
  148. package/edit/fleet.cattle.io.clustergroup.vue +6 -4
  149. package/edit/fleet.cattle.io.gitrepo.vue +32 -4
  150. package/edit/helm.cattle.io.projecthelmchart.vue +5 -1
  151. package/edit/logging.banzaicloud.io.output/index.vue +18 -5
  152. package/edit/logging.banzaicloud.io.output/providers/loki.vue +1 -0
  153. package/edit/management.cattle.io.fleetworkspace.vue +141 -6
  154. package/edit/management.cattle.io.podsecurityadmissionconfigurationtemplate.vue +4 -1
  155. package/edit/management.cattle.io.setting.vue +1 -1
  156. package/edit/monitoring.coreos.com.alertmanagerconfig/types/webhook.vue +2 -2
  157. package/edit/monitoring.coreos.com.receiver/tls.vue +18 -18
  158. package/edit/monitoring.coreos.com.receiver/types/webhook.banner.vue +4 -4
  159. package/edit/monitoring.coreos.com.receiver/types/webhook.vue +1 -1
  160. package/edit/namespace.vue +14 -10
  161. package/edit/networking.k8s.io.networkpolicy/PolicyRuleTarget.vue +126 -45
  162. package/edit/networking.k8s.io.networkpolicy/index.vue +1 -1
  163. package/edit/provisioning.cattle.io.cluster/MachinePool.vue +21 -4
  164. package/edit/provisioning.cattle.io.cluster/RegistryConfigs.vue +1 -0
  165. package/edit/provisioning.cattle.io.cluster/__tests__/rke2.test.ts +202 -2
  166. package/edit/provisioning.cattle.io.cluster/import.vue +23 -25
  167. package/edit/provisioning.cattle.io.cluster/rke2.vue +344 -102
  168. package/edit/resources.cattle.io.backup.vue +1 -1
  169. package/edit/service.vue +1 -1
  170. package/edit/storage.k8s.io.storageclass/provisioners/driver.harvesterhci.io.vue +2 -2
  171. package/edit/workload/__tests__/Job.test.ts +3 -1
  172. package/edit/workload/index.vue +8 -3
  173. package/edit/workload/mixins/workload.js +22 -7
  174. package/edit/workload/storage/Mount.vue +3 -3
  175. package/initialize/App.js +206 -0
  176. package/initialize/client.js +863 -0
  177. package/initialize/index.js +364 -0
  178. package/layouts/default.vue +7 -3
  179. package/layouts/standalone.vue +13 -0
  180. package/list/catalog.cattle.io.clusterrepo.vue +1 -0
  181. package/list/fleet.cattle.io.bundle.vue +6 -3
  182. package/list/fleet.cattle.io.clusterregistrationtoken.vue +3 -1
  183. package/list/fleet.cattle.io.gitrepo.vue +44 -5
  184. package/list/management.cattle.io.fleetworkspace.vue +45 -0
  185. package/list/node.vue +69 -16
  186. package/list/provisioning.cattle.io.cluster.vue +30 -1
  187. package/list/rbac.authorization.k8s.io.clusterrolebinding.vue +48 -0
  188. package/list/workload.vue +6 -4
  189. package/machine-config/azure.vue +97 -38
  190. package/middleware/authenticated.js +34 -0
  191. package/mixins/chart.js +101 -2
  192. package/mixins/fetch.client.js +95 -0
  193. package/mixins/fetch.server.js +73 -0
  194. package/mixins/labeled-form-element.ts +2 -2
  195. package/mixins/resource-fetch.js +2 -2
  196. package/models/apps.statefulset.js +28 -0
  197. package/models/cluster/node.js +23 -2
  198. package/models/cluster.x-k8s.io.machine.js +4 -2
  199. package/models/clusterroletemplatebinding.js +7 -0
  200. package/models/constraints.gatekeeper.sh.constraint.js +46 -0
  201. package/models/fleet.cattle.io.cluster.js +19 -10
  202. package/models/fleet.cattle.io.gitrepo.js +7 -2
  203. package/models/management.cattle.io.cluster.js +1 -1
  204. package/models/management.cattle.io.fleetworkspace.js +12 -0
  205. package/models/management.cattle.io.gitreporestriction.js +5 -0
  206. package/models/management.cattle.io.podsecurityadmissionconfigurationtemplate.js +3 -0
  207. package/models/pod.js +4 -0
  208. package/models/provisioning.cattle.io.cluster.js +7 -5
  209. package/models/rbac.authorization.k8s.io.clusterrolebinding.js +16 -0
  210. package/models/rbac.authorization.k8s.io.rolebinding.js +16 -0
  211. package/package.json +13 -21
  212. package/pages/auth/setup.vue +2 -2
  213. package/pages/c/_cluster/apps/charts/__tests__/install.helper.test.ts +33 -0
  214. package/pages/c/_cluster/apps/charts/chart.vue +4 -4
  215. package/pages/c/_cluster/apps/charts/install.helpers.js +26 -0
  216. package/pages/c/_cluster/apps/charts/install.vue +98 -102
  217. package/pages/c/_cluster/explorer/EventsTable.vue +5 -19
  218. package/pages/c/_cluster/explorer/index.vue +29 -25
  219. package/pages/c/_cluster/explorer/tools/index.vue +8 -8
  220. package/pages/c/_cluster/fleet/index.vue +95 -34
  221. package/pages/c/_cluster/gatekeeper/index.vue +1 -1
  222. package/pages/c/_cluster/istio/index.vue +5 -5
  223. package/pages/c/_cluster/manager/cloudCredential/index.vue +1 -1
  224. package/pages/c/_cluster/monitoring/index.vue +7 -0
  225. package/pages/c/_cluster/uiplugins/InstallDialog.vue +8 -8
  226. package/pages/c/_cluster/uiplugins/PluginInfoPanel.vue +20 -7
  227. package/pages/c/_cluster/uiplugins/index.vue +49 -17
  228. package/pages/diagnostic.vue +32 -25
  229. package/pages/home.vue +9 -4
  230. package/pages/index.vue +10 -1
  231. package/pages/rio/mesh.vue +1 -2
  232. package/pkg/tsconfig.json +0 -1
  233. package/plugins/clean-html-directive.js +34 -0
  234. package/plugins/dashboard-store/actions.js +32 -9
  235. package/plugins/dashboard-store/index.js +1 -1
  236. package/plugins/dashboard-store/mutations.js +5 -2
  237. package/plugins/dashboard-store/resource-class.js +8 -1
  238. package/plugins/plugin.js +0 -14
  239. package/plugins/portal-vue.js +4 -0
  240. package/plugins/steve/mutations.js +3 -2
  241. package/plugins/steve/steve-description-class.js +5 -1
  242. package/plugins/steve/subscribe.js +63 -54
  243. package/plugins/steve-create-worker.js +14 -0
  244. package/promptRemove/management.cattle.io.globalrole.vue +2 -2
  245. package/promptRemove/management.cattle.io.project.vue +2 -2
  246. package/promptRemove/management.cattle.io.roletemplate.vue +2 -2
  247. package/promptRemove/pod.vue +1 -1
  248. package/public/index.html +65 -0
  249. package/rancher-components/components/Banner/Banner.test.ts +7 -1
  250. package/rancher-components/components/Banner/Banner.vue +2 -1
  251. package/rancher-components/components/Form/Checkbox/Checkbox.vue +2 -0
  252. package/rancher-components/components/Form/Radio/RadioButton.test.ts +31 -0
  253. package/rancher-components/components/Form/Radio/RadioButton.vue +14 -3
  254. package/scripts/build-pkg.sh +1 -0
  255. package/scripts/clean +6 -0
  256. package/scripts/extension/bundle +58 -0
  257. package/scripts/extension/helmpatch +89 -0
  258. package/scripts/extension/publish +333 -0
  259. package/scripts/serve-pkgs +6 -2
  260. package/scripts/test-plugins-build.sh +4 -0
  261. package/store/__tests__/index.test.ts +110 -0
  262. package/store/index.js +145 -58
  263. package/store/type-map.js +6 -2
  264. package/tsconfig.default.json +36 -0
  265. package/tsconfig.json +23 -0
  266. package/types/rancher/index.d.ts +2 -0
  267. package/types/shell/index.d.ts +466 -320
  268. package/utils/__tests__/grafana.test.ts +44 -0
  269. package/utils/__tests__/string.test.ts +12 -0
  270. package/utils/auth.js +65 -0
  271. package/utils/axios.js +190 -0
  272. package/utils/cookie-universal-nuxt.js +10 -0
  273. package/utils/dom.js +15 -0
  274. package/utils/grafana.js +35 -16
  275. package/utils/monitoring.js +2 -1
  276. package/utils/nuxt.js +659 -0
  277. package/utils/position.js +5 -8
  278. package/utils/router.scrollBehavior.js +80 -0
  279. package/utils/select.js +1 -3
  280. package/utils/socket.js +1 -0
  281. package/utils/string.js +13 -0
  282. package/utils/time.js +9 -0
  283. package/vue.config.js +690 -0
  284. package/chart/rancher-alerting-drivers.vue +0 -53
  285. package/chart/rancher-gatekeeper.vue +0 -37
  286. package/creators/app/files/nuxt.config.js +0 -6
  287. package/models/management.cattle.io.podsecurityadmissionconfigurationtemplate.ts +0 -4
  288. package/nuxt.config.js +0 -798
  289. package/plugins/dashboard-store/extensions.js +0 -22
package/chart/istio.vue CHANGED
@@ -5,8 +5,8 @@ import { Checkbox } from '@components/Form/Checkbox';
5
5
  import YamlEditor from '@shell/components/YamlEditor';
6
6
  import { mapGetters } from 'vuex';
7
7
  import FileSelector from '@shell/components/form/FileSelector';
8
- import Tab from '@shell/components/Tabbed/Tab';
9
8
  import { Banner } from '@components/Banner';
9
+ import ChartPsp from '@shell/components/ChartPsp';
10
10
 
11
11
  const defaultOverlayFile = `#apiVersion: install.istio.io/v1alpha1
12
12
  #kind: IstioOperator
@@ -54,12 +54,10 @@ export default {
54
54
  Checkbox,
55
55
  FileSelector,
56
56
  YamlEditor,
57
- Tab,
58
- Banner
57
+ Banner,
58
+ ChartPsp
59
59
  },
60
60
 
61
- hasTabs: true,
62
-
63
61
  props: {
64
62
  value: {
65
63
  type: Object,
@@ -76,10 +74,14 @@ export default {
76
74
  overlayFile = defaultOverlayFile;
77
75
  }
78
76
 
79
- return { overlayFile };
77
+ return {
78
+ overlayFile,
79
+ showKialiBanner: this.value.kiali?.enabled
80
+ };
80
81
  },
81
82
 
82
83
  computed: {
84
+ ...mapGetters(['currentCluster'], { t: 'i18n/t' }),
83
85
  valuesYaml: {
84
86
  get() {
85
87
  try {
@@ -100,8 +102,6 @@ export default {
100
102
  }
101
103
  }, 500)
102
104
  },
103
-
104
- ...mapGetters({ t: 'i18n/t' })
105
105
  },
106
106
 
107
107
  methods: {
@@ -124,6 +124,15 @@ export default {
124
124
 
125
125
  onFileSelected(value) {
126
126
  this.$refs['yaml-editor'].updateValue(value);
127
+ },
128
+
129
+ changeKiali(value) {
130
+ if (value && this.value.pilot) {
131
+ this.value.pilot.enabled = true;
132
+ this.showKialiBanner = true;
133
+ } else if (!value) {
134
+ this.showKialiBanner = false;
135
+ }
127
136
  }
128
137
  }
129
138
  };
@@ -131,116 +140,130 @@ export default {
131
140
 
132
141
  <template>
133
142
  <div>
134
- <Tab
135
- name="components"
136
- :label="t('istio.titles.components') "
137
- >
138
- <div class="row">
139
- <div
140
- v-if="value.cni"
141
- class="col span-4"
142
- >
143
- <Checkbox
144
- v-model="value.cni.enabled"
145
- :label="t('istio.cni')"
146
- @input="update"
147
- />
148
- </div>
149
- <div
150
- v-if="value.ingressGateways"
151
- class="col span-4"
152
- >
153
- <Checkbox
154
- v-model="value.ingressGateways.enabled"
155
- :label="t('istio.ingressGateway')"
156
- />
157
- </div>
158
- <div
159
- v-if="value.egressGateways"
160
- class="col span-4"
161
- >
162
- <Checkbox
163
- v-model="value.egressGateways.enabled"
164
- :label="t('istio.egressGateway')"
165
- />
166
- </div>
143
+ <!-- Conditionally display PSP checkbox -->
144
+ <ChartPsp
145
+ :value="value"
146
+ :title="t('catalog.chart.global')"
147
+ :cluster="currentCluster"
148
+ />
149
+
150
+ <h3>
151
+ {{ t('istio.titles.components') }}
152
+ </h3>
153
+ <div class="row mb-10">
154
+ <div
155
+ v-if="value.cni"
156
+ class="col span-4"
157
+ >
158
+ <Checkbox
159
+ v-model="value.cni.enabled"
160
+ :label="t('istio.cni')"
161
+ @input="update"
162
+ />
167
163
  </div>
168
- <div class="row">
169
- <div
170
- v-if="value.pilot"
171
- class="col span-4"
172
- >
173
- <Checkbox
174
- v-model="value.pilot.enabled"
175
- :label="t('istio.pilot')"
176
- />
177
- </div>
178
- <div
179
- v-if="value.policy"
180
- class="col span-4"
181
- >
182
- <Checkbox
183
- v-model="value.policy.enabled"
184
- :label="t('istio.policy')"
185
- />
186
- </div>
187
- <div
188
- v-if="value.telemetry"
189
- class="col span-4"
190
- >
191
- <Checkbox
192
- v-model="value.telemetry.enabled"
193
- :label="t('istio.telemetry')"
194
- />
195
- </div>
164
+ <div
165
+ v-if="value.ingressGateways"
166
+ class="col span-4"
167
+ >
168
+ <Checkbox
169
+ v-model="value.ingressGateways.enabled"
170
+ :label="t('istio.ingressGateway')"
171
+ />
196
172
  </div>
197
- <div class="row">
198
- <div
199
- v-if="value.kiali"
200
- class="col span-4"
201
- >
202
- <Checkbox
203
- v-model="value.kiali.enabled"
204
- :label="t('istio.kiali')"
205
- />
206
- </div>
207
- <div
208
- v-if="value.tracing"
209
- class="col span-4"
210
- >
211
- <Checkbox
212
- v-model="value.tracing.enabled"
213
- :label="t('istio.tracing')"
214
- />
215
- </div>
216
- <div class="col span-4" />
173
+ <div
174
+ v-if="value.egressGateways"
175
+ class="col span-4"
176
+ >
177
+ <Checkbox
178
+ v-model="value.egressGateways.enabled"
179
+ :label="t('istio.egressGateway')"
180
+ />
217
181
  </div>
218
- </Tab>
219
-
220
- <Tab
221
- :label="t('istio.customOverlayFile.label')"
222
- name="overlay"
223
- @active="$refs['yaml-editor'].refresh()"
224
- >
225
- <div class="custom-overlay">
226
- <Banner color="info">
227
- <span
228
- v-html="t('istio.customOverlayFile.tip', {}, true)"
229
- />
230
- </Banner>
231
- <YamlEditor
232
- ref="yaml-editor"
233
- class="yaml-editor mb-10"
234
- :value="overlayFile"
235
- @onInput="valuesChanged"
182
+ </div>
183
+ <div class="row mb-10">
184
+ <div
185
+ v-if="value.pilot"
186
+ class="col span-4"
187
+ >
188
+ <Checkbox
189
+ v-model="value.pilot.enabled"
190
+ :label="t('istio.pilot')"
191
+ :disabled="value.kiali && value.kiali.enabled"
192
+ />
193
+ </div>
194
+ <div
195
+ v-if="value.policy"
196
+ class="col span-4"
197
+ >
198
+ <Checkbox
199
+ v-model="value.policy.enabled"
200
+ :label="t('istio.policy')"
201
+ />
202
+ </div>
203
+ <div
204
+ v-if="value.telemetry"
205
+ class="col span-4"
206
+ >
207
+ <Checkbox
208
+ v-model="value.telemetry.enabled"
209
+ :label="t('istio.telemetry')"
236
210
  />
237
- <FileSelector
238
- class="role-primary btn-sm"
239
- :label="t('generic.readFromFile')"
240
- @selected="onFileSelected"
211
+ </div>
212
+ </div>
213
+ <div class="row mb-20">
214
+ <div
215
+ v-if="value.kiali"
216
+ class="col span-4"
217
+ >
218
+ <Checkbox
219
+ v-model="value.kiali.enabled"
220
+ :label="t('istio.kiali')"
221
+ @input="changeKiali"
222
+ />
223
+ </div>
224
+ <div
225
+ v-if="value.tracing"
226
+ class="col span-4"
227
+ >
228
+ <Checkbox
229
+ v-model="value.tracing.enabled"
230
+ :label="t('istio.tracing')"
241
231
  />
242
232
  </div>
243
- </Tab>
233
+ <div class="col span-4" />
234
+ <div
235
+ v-if="showKialiBanner"
236
+ class="row"
237
+ >
238
+ <div class="col span-12">
239
+ <Banner color="info">
240
+ <span
241
+ v-clean-html="t('istio.pilotRequired', {}, true)"
242
+ />
243
+ </Banner>
244
+ </div>
245
+ </div>
246
+ </div>
247
+
248
+ <h3>{{ t('istio.customOverlayFile.label') }}</h3>
249
+ <div class="custom-overlay">
250
+ <Banner color="info">
251
+ <span
252
+ v-clean-html="t('istio.customOverlayFile.tip', {}, true)"
253
+ />
254
+ </Banner>
255
+ <YamlEditor
256
+ ref="yaml-editor"
257
+ class="yaml-editor mb-10"
258
+ :value="overlayFile"
259
+ @onInput="valuesChanged"
260
+ />
261
+ <FileSelector
262
+ class="role-primary btn-sm"
263
+ :label="t('generic.readFromFile')"
264
+ @selected="onFileSelected"
265
+ />
266
+ </div>
244
267
  </div>
245
268
  </template>
246
269
 
@@ -2,10 +2,13 @@
2
2
  import { mapGetters } from 'vuex';
3
3
  import { LabeledInput } from '@components/Form/LabeledInput';
4
4
  import { Checkbox } from '@components/Form/Checkbox';
5
+ import ChartPsp from '@shell/components/ChartPsp';
5
6
 
6
7
  export default {
7
- components: { Checkbox, LabeledInput },
8
- props: {
8
+ components: {
9
+ Checkbox, LabeledInput, ChartPsp
10
+ },
11
+ props: {
9
12
  value: {
10
13
  type: Object,
11
14
  default: () => {
@@ -67,12 +70,12 @@ export default {
67
70
  :tooltip="t('logging.install.tooltip', {}, true)"
68
71
  />
69
72
  <p
73
+ v-clean-html="t('logging.install.url', {}, true)"
70
74
  class="mt-6"
71
- v-html="t('logging.install.url', {}, true)"
72
75
  />
73
76
  </div>
74
77
  </div>
75
- <div class="row">
78
+ <div class="row mb-20">
76
79
  <div class="col span-6">
77
80
  <Checkbox
78
81
  v-model="value.additionalLoggingSources[provider].enabled"
@@ -80,5 +83,11 @@ export default {
80
83
  />
81
84
  </div>
82
85
  </div>
86
+
87
+ <!-- Conditionally display PSP checkbox -->
88
+ <ChartPsp
89
+ :value="value"
90
+ :cluster="currentCluster"
91
+ />
83
92
  </div>
84
93
  </template>
@@ -12,6 +12,7 @@ import { LabeledInput } from '@components/Form/LabeledInput';
12
12
  import Loading from '@shell/components/Loading';
13
13
  import Prometheus from '@shell/chart/monitoring/prometheus';
14
14
  import Tab from '@shell/components/Tabbed/Tab';
15
+ import ChartPsp from '@shell/components/ChartPsp';
15
16
 
16
17
  import { allHash } from '@shell/utils/promise';
17
18
  import { STORAGE_CLASS, PVC, SECRET, WORKLOAD_TYPES } from '@shell/config/types';
@@ -26,6 +27,7 @@ export default {
26
27
  Loading,
27
28
  Prometheus,
28
29
  Tab,
30
+ ChartPsp
29
31
  },
30
32
 
31
33
  hasTabs: true,
@@ -207,11 +209,13 @@ export default {
207
209
  >
208
210
  <div>
209
211
  <div class="row mb-20">
210
- <ClusterSelector
211
- :value="value"
212
- :mode="mode"
213
- @onClusterTypeChanged="clusterType = $event"
214
- />
212
+ <div class="col span-6">
213
+ <ClusterSelector
214
+ :value="value"
215
+ :mode="mode"
216
+ @onClusterTypeChanged="clusterType = $event"
217
+ />
218
+ </div>
215
219
  </div>
216
220
  <div
217
221
  v-if="clusterType.group === 'managed'"
@@ -257,6 +261,12 @@ export default {
257
261
  />
258
262
  </div>
259
263
  </div>
264
+
265
+ <!-- Conditionally display PSP checkbox -->
266
+ <ChartPsp
267
+ :value="value"
268
+ :cluster="currentCluster"
269
+ />
260
270
  </div>
261
271
  </Tab>
262
272
  <Tab
@@ -88,8 +88,8 @@ export default {
88
88
  {{ t('monitoring.installSteps.uninstallV1.warning1') }}
89
89
  </p>
90
90
  <p
91
+ v-clean-html="t('monitoring.installSteps.uninstallV1.warning2', {}, true)"
91
92
  class="mt-10"
92
- v-html="t('monitoring.installSteps.uninstallV1.warning2', {}, true)"
93
93
  />
94
94
  </template>
95
95
  </IconMessage>
@@ -111,8 +111,8 @@ export default {
111
111
  {{ t('monitoring.installSteps.uninstallV1.success1') }}
112
112
  </p>
113
113
  <p
114
+ v-clean-html="t('monitoring.installSteps.uninstallV1.success2')"
114
115
  class="mt-10"
115
- v-html="t('monitoring.installSteps.uninstallV1.success2')"
116
116
  />
117
117
  </template>
118
118
  </IconMessage>
@@ -10,6 +10,7 @@ import { allHash } from '@shell/utils/promise';
10
10
  import { STORAGE_CLASS, SECRET, PV } from '@shell/config/types';
11
11
  import { mapGetters } from 'vuex';
12
12
  import { STORAGE } from '@shell/config/labels-annotations';
13
+ import ChartPsp from '@shell/components/ChartPsp';
13
14
 
14
15
  export default {
15
16
  components: {
@@ -18,7 +19,8 @@ export default {
18
19
  S3,
19
20
  LabeledInput,
20
21
  LabeledSelect,
21
- Banner
22
+ Banner,
23
+ ChartPsp
22
24
  },
23
25
 
24
26
  hasTabs: true,
@@ -84,8 +86,7 @@ export default {
84
86
  return { options, labels };
85
87
  },
86
88
 
87
- ...mapGetters({ t: 'i18n/t' })
88
-
89
+ ...mapGetters(['currentCluster'], { t: 'i18n/t' }),
89
90
  },
90
91
 
91
92
  watch: {
@@ -165,6 +166,12 @@ export default {
165
166
  label="Chart Options"
166
167
  name="chartOptions"
167
168
  >
169
+ <!-- Conditionally display PSP checkbox -->
170
+ <ChartPsp
171
+ :value="value"
172
+ :cluster="currentCluster"
173
+ />
174
+
168
175
  <Banner
169
176
  color="info"
170
177
  :label="t('backupRestoreOperator.deployment.storage.tip')"
@@ -97,8 +97,8 @@ export default {
97
97
  @input="value.setData('defaultRegion', $event);"
98
98
  />
99
99
  <p
100
+ v-clean-html="t('cluster.credential.aws.defaultRegion.help', {}, true)"
100
101
  class="text-muted mt-5"
101
- v-html="t('cluster.credential.aws.defaultRegion.help', {}, true)"
102
102
  />
103
103
  </div>
104
104
  </template>
@@ -40,8 +40,8 @@ export default {
40
40
  @input="value.setData('accessToken', $event);"
41
41
  />
42
42
  <p
43
+ v-clean-html="t('cluster.credential.digitalocean.accessToken.help', {}, true)"
43
44
  class="text-muted mt-10"
44
- v-html="t('cluster.credential.digitalocean.accessToken.help', {}, true)"
45
45
  />
46
46
  </div>
47
47
  </template>
@@ -64,8 +64,8 @@ export default {
64
64
  @selected="onFileSelected"
65
65
  />
66
66
  <p
67
+ v-clean-html="t('cluster.credential.gcp.authEncodedJson.help', {}, true)"
67
68
  class="text-muted"
68
- v-html="t('cluster.credential.gcp.authEncodedJson.help', {}, true)"
69
69
  />
70
70
  </div>
71
71
  </template>
@@ -21,8 +21,8 @@ export default {
21
21
  const normanType = this.$store.getters['plugins/credentialFieldForDriver'](this.driverName);
22
22
  const normanSchema = this.$store.getters['rancher/schemaFor'](`${ normanType }credentialconfig`);
23
23
 
24
- if ( normanSchema ) {
25
- keyOptions = Object.keys(normanSchema.resourceFields || {});
24
+ if ( normanSchema?.resourceFields ) {
25
+ keyOptions = Object.keys(normanSchema.resourceFields);
26
26
  } else {
27
27
  keyOptions = this.$store.getters['plugins/fieldNamesForDriver'](this.driverName);
28
28
  }
@@ -40,8 +40,8 @@ export default {
40
40
  @input="value.setData('token', $event);"
41
41
  />
42
42
  <p
43
+ v-clean-html="t('cluster.credential.linode.accessToken.help', {}, true)"
43
44
  class="text-muted mt-10"
44
- v-html="t('cluster.credential.linode.accessToken.help', {}, true)"
45
45
  />
46
46
  </div>
47
47
  </template>
@@ -72,8 +72,8 @@ export default {
72
72
  </div>
73
73
  <div class="row mt-5">
74
74
  <p
75
+ v-clean-html="t('cluster.credential.pnap.clientSecret.help', {}, true)"
75
76
  class="text-muted mt-10"
76
- v-html="t('cluster.credential.pnap.clientSecret.help', {}, true)"
77
77
  />
78
78
  </div>
79
79
  </div>
@@ -1,6 +1,5 @@
1
1
  <script>
2
2
  import { mapGetters } from 'vuex';
3
- import $ from 'jquery';
4
3
  import { AUTO, CENTER, fitOnScreen } from '@shell/utils/position';
5
4
  import { isAlternate } from '@shell/utils/platform';
6
5
  import IconOrSvg from '@shell/components/IconOrSvg';
@@ -149,7 +148,7 @@ export default {
149
148
 
150
149
  updateStyle() {
151
150
  if ( this.phase === SHOW && !this.useCustomTargetElement) {
152
- const menu = $('.menu', this.$el)[0];
151
+ const menu = this.$el?.querySelector && this.$el.querySelector('.menu');
153
152
  const event = this.targetEvent;
154
153
  const elem = this.targetElem;
155
154
 
@@ -169,7 +168,7 @@ export default {
169
168
  }
170
169
 
171
170
  if ( this.open && this.useCustomTargetElement) {
172
- const menu = $('.menu', this.$el)[0];
171
+ const menu = this.$el?.querySelector && this.$el.querySelector('.menu');
173
172
  const elem = this.customTargetElement;
174
173
 
175
174
  // If the action menu state is controlled with
@@ -271,7 +270,7 @@ export default {
271
270
  class="icon"
272
271
  color="header"
273
272
  />
274
- <span v-html="opt.label" />
273
+ <span v-clean-html="opt.label" />
275
274
  </li>
276
275
 
277
276
  <li
@@ -118,8 +118,8 @@ export default {
118
118
  >
119
119
  <h4
120
120
  slot="title"
121
+ v-clean-html="t('assignTo.title', {count: resourceCount}, true)"
121
122
  class="text-default-text"
122
- v-html="t('assignTo.title', {count: resourceCount}, true)"
123
123
  />
124
124
 
125
125
  <div
@@ -281,7 +281,7 @@ export default Vue.extend({
281
281
  <span
282
282
  v-if="labelAs === 'text' && displayLabel"
283
283
  v-tooltip="tooltip"
284
- v-html="displayLabel"
284
+ v-clean-html="displayLabel"
285
285
  />
286
286
  </button>
287
287
  </template>
@@ -46,9 +46,9 @@ export default {
46
46
  </div>
47
47
  <h1
48
48
  v-else-if="title"
49
+ v-clean-html="title"
49
50
  data-testid="banner-title"
50
51
  class="title"
51
- v-html="title"
52
52
  />
53
53
  <div
54
54
  v-if="pref"
@@ -14,11 +14,8 @@ export default {
14
14
  default: false
15
15
  }
16
16
  },
17
- async fetch() {
18
- this.managementSettings = await this.$store.getters['management/all'](MANAGEMENT.SETTING);
19
- },
20
17
  data() {
21
- return { managementSettings: [] };
18
+ return { managementSettings: this.$store.getters['management/all'](MANAGEMENT.SETTING) };
22
19
  },
23
20
  computed: {
24
21
  ...mapGetters({ theme: 'prefs/theme' }),
@@ -3,7 +3,6 @@ import { createPopper } from '@popperjs/core';
3
3
  import { get } from '@shell/utils/object';
4
4
  import isString from 'lodash/isString';
5
5
  import VueSelectOverrides from '@shell/mixins/vue-select-overrides';
6
- import $ from 'jquery';
7
6
 
8
7
  export default {
9
8
  mixins: [VueSelectOverrides],
@@ -70,8 +69,8 @@ export default {
70
69
  * We need to explicitly define the dropdown width since
71
70
  * it is usually inherited from the parent with CSS.
72
71
  */
73
- const componentWidth = $(component.$refs.search).width();
74
- const dropWidth = $(dropdownList).width();
72
+ const componentWidth = component.$refs.search.clientWidth;
73
+ const dropWidth = dropdownList.clientWidth;
75
74
 
76
75
  if (dropWidth < componentWidth) {
77
76
  dropdownList.style.width = `${ componentWidth }px`;