@rancher/shell 0.3.3 → 0.3.5

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 (249) hide show
  1. package/assets/styles/app.scss +1 -1
  2. package/assets/styles/fonts/_fontstack.scss +11 -11
  3. package/assets/styles/vendor/vue-js-modal.scss +3 -3
  4. package/assets/translations/en-us.yaml +92 -22
  5. package/assets/translations/zh-hans.yaml +84 -15
  6. package/babel.config.js +13 -0
  7. package/chart/gatekeeper.vue +77 -0
  8. package/chart/istio.vue +108 -111
  9. package/chart/logging/index.vue +13 -4
  10. package/chart/monitoring/index.vue +15 -5
  11. package/chart/monitoring/steps/uninstall-v1.vue +2 -2
  12. package/chart/rancher-backup/index.vue +10 -3
  13. package/cloud-credential/aws.vue +1 -1
  14. package/cloud-credential/digitalocean.vue +1 -1
  15. package/cloud-credential/gcp.vue +1 -1
  16. package/cloud-credential/generic.vue +2 -2
  17. package/cloud-credential/linode.vue +1 -1
  18. package/cloud-credential/pnap.vue +1 -1
  19. package/components/ActionMenu.vue +3 -4
  20. package/components/AssignTo.vue +1 -1
  21. package/components/AsyncButton.vue +1 -1
  22. package/components/BannerGraphic.vue +1 -1
  23. package/components/ButtonDropdown.vue +2 -3
  24. package/components/ChartPsp.vue +76 -0
  25. package/components/CruResource.vue +6 -2
  26. package/components/DashboardMetrics.vue +12 -10
  27. package/components/DetailText.vue +1 -1
  28. package/components/DisableAuthProviderModal.vue +1 -1
  29. package/components/EmberPage.vue +1 -1
  30. package/components/EtcdInfoBanner.vue +5 -4
  31. package/components/ExplorerMembers.vue +1 -1
  32. package/components/ExplorerProjectsNamespaces.vue +15 -2
  33. package/components/FileDiff.vue +6 -7
  34. package/components/GrafanaDashboard.vue +18 -21
  35. package/components/LazyImage.vue +10 -12
  36. package/components/LogItem.vue +1 -1
  37. package/components/Markdown.vue +1 -1
  38. package/components/PromptRemove.vue +2 -2
  39. package/components/PromptRestore.vue +1 -1
  40. package/components/ResourceDetail/Masthead.vue +16 -0
  41. package/components/ResourceDetail/index.vue +21 -4
  42. package/components/ResourceList/index.vue +1 -1
  43. package/components/ResourceTable.vue +4 -1
  44. package/components/SingleClusterInfo.vue +2 -2
  45. package/components/SortableTable/THead.vue +1 -1
  46. package/components/SortableTable/index.vue +5 -2
  47. package/components/__tests__/AsyncButton.test.ts +3 -1
  48. package/components/__tests__/ChartPsp.test.ts +75 -0
  49. package/components/__tests__/CruResource.test.ts +3 -1
  50. package/components/auth/Principal.vue +1 -1
  51. package/components/fleet/FleetBundles.vue +3 -1
  52. package/components/fleet/FleetClusters.vue +1 -2
  53. package/components/fleet/FleetIntro.vue +9 -1
  54. package/components/fleet/FleetNoWorkspaces.vue +62 -0
  55. package/components/fleet/FleetSummary.vue +7 -1
  56. package/components/form/LabeledSelect.vue +14 -11
  57. package/components/form/MatchExpressions.vue +17 -2
  58. package/components/form/NameNsDescription.vue +31 -45
  59. package/components/form/ResourceSelector.vue +1 -1
  60. package/components/form/SecretSelector.vue +5 -1
  61. package/components/form/ServiceNameSelect.vue +1 -1
  62. package/components/form/SimpleSecretSelector.vue +9 -9
  63. package/components/form/__tests__/LabeledSelect.test.ts +138 -0
  64. package/components/form/__tests__/NameNsDescription.ts +32 -0
  65. package/components/formatter/InternalExternalIP.vue +6 -0
  66. package/components/formatter/InvolvedObjectLink.vue +54 -0
  67. package/components/formatter/Link.vue +20 -4
  68. package/components/formatter/LinkName.vue +6 -1
  69. package/components/formatter/ServiceTargets.vue +1 -1
  70. package/components/nav/Group.vue +2 -2
  71. package/components/nav/NamespaceFilter.vue +15 -11
  72. package/components/nav/TopLevelMenu.vue +2 -4
  73. package/components/nav/Type.vue +1 -1
  74. package/components/nav/WorkspaceSwitcher.vue +46 -5
  75. package/config/labels-annotations.js +17 -0
  76. package/config/product/auth.js +3 -2
  77. package/config/product/explorer.js +11 -4
  78. package/config/product/fleet.js +2 -0
  79. package/config/router.js +414 -0
  80. package/config/table-headers.js +10 -2
  81. package/config/types.js +11 -8
  82. package/config/uiplugins.js +30 -0
  83. package/content/docs/en-us/whats-new.md +10 -0
  84. package/content/docs/zh-hans/whats-new.md +11 -1
  85. package/core/plugin-helpers.js +64 -61
  86. package/core/plugin-routes.ts +23 -0
  87. package/creators/app/app.package.json +2 -1
  88. package/creators/app/files/.eslintrc.js +1 -1
  89. package/creators/app/files/babel.config.js +1 -18
  90. package/creators/app/files/vue.config.js +7 -0
  91. package/creators/app/init +5 -5
  92. package/creators/pkg/files/.github/workflows/build-extension.yml +111 -0
  93. package/creators/pkg/init +35 -4
  94. package/creators/update/init +1 -1
  95. package/detail/constraints.gatekeeper.sh.constraint.vue +20 -10
  96. package/detail/fleet.cattle.io.gitrepo.vue +19 -11
  97. package/detail/harvesterhci.io.management.cluster.vue +3 -3
  98. package/detail/provisioning.cattle.io.cluster.vue +54 -12
  99. package/detail/workload/index.vue +3 -3
  100. package/dialog/AddClusterMemberDialog.vue +1 -1
  101. package/dialog/AddProjectMemberDialog.vue +2 -2
  102. package/dialog/AddonConfigConfirmationDialog.vue +27 -15
  103. package/dialog/DiagnosticTimingsDialog.vue +1 -1
  104. package/dialog/ForceMachineRemoveDialog.vue +1 -1
  105. package/dialog/GenericPrompt.vue +18 -6
  106. package/dialog/RotateEncryptionKeyDialog.vue +1 -1
  107. package/dialog/SaveAsRKETemplateDialog.vue +1 -1
  108. package/dialog/ScaleMachineDownDialog.vue +1 -1
  109. package/edit/auth/github.vue +8 -8
  110. package/edit/auth/googleoauth.vue +5 -5
  111. package/edit/auth/ldap/index.vue +1 -1
  112. package/edit/auth/oidc.vue +1 -1
  113. package/edit/auth/saml.vue +1 -1
  114. package/edit/cis.cattle.io.clusterscan.vue +1 -1
  115. package/edit/fleet.cattle.io.clustergroup.vue +6 -4
  116. package/edit/fleet.cattle.io.gitrepo.vue +16 -3
  117. package/edit/helm.cattle.io.projecthelmchart.vue +5 -1
  118. package/edit/management.cattle.io.fleetworkspace.vue +141 -6
  119. package/edit/management.cattle.io.podsecurityadmissionconfigurationtemplate.vue +4 -1
  120. package/edit/management.cattle.io.setting.vue +1 -1
  121. package/edit/monitoring.coreos.com.alertmanagerconfig/types/webhook.vue +2 -2
  122. package/edit/monitoring.coreos.com.receiver/tls.vue +18 -18
  123. package/edit/monitoring.coreos.com.receiver/types/webhook.banner.vue +4 -4
  124. package/edit/monitoring.coreos.com.receiver/types/webhook.vue +1 -1
  125. package/edit/namespace.vue +2 -2
  126. package/edit/networking.k8s.io.networkpolicy/PolicyRuleTarget.vue +126 -45
  127. package/edit/networking.k8s.io.networkpolicy/index.vue +1 -1
  128. package/edit/provisioning.cattle.io.cluster/MachinePool.vue +10 -0
  129. package/edit/provisioning.cattle.io.cluster/RegistryConfigs.vue +1 -0
  130. package/edit/provisioning.cattle.io.cluster/__tests__/rke2.test.ts +202 -2
  131. package/edit/provisioning.cattle.io.cluster/rke2.vue +248 -84
  132. package/edit/resources.cattle.io.backup.vue +1 -1
  133. package/edit/service.vue +1 -1
  134. package/edit/storage.k8s.io.storageclass/provisioners/driver.harvesterhci.io.vue +2 -2
  135. package/edit/workload/__tests__/Job.test.ts +3 -1
  136. package/edit/workload/index.vue +8 -3
  137. package/edit/workload/mixins/workload.js +16 -0
  138. package/layouts/default.vue +7 -3
  139. package/list/fleet.cattle.io.bundle.vue +6 -3
  140. package/list/fleet.cattle.io.clusterregistrationtoken.vue +3 -1
  141. package/list/fleet.cattle.io.gitrepo.vue +44 -5
  142. package/list/management.cattle.io.fleetworkspace.vue +45 -0
  143. package/list/node.vue +69 -16
  144. package/list/provisioning.cattle.io.cluster.vue +30 -1
  145. package/machine-config/azure.vue +97 -38
  146. package/middleware/authenticated.js +34 -0
  147. package/mixins/chart.js +73 -2
  148. package/mixins/resource-fetch.js +2 -2
  149. package/models/apps.statefulset.js +28 -0
  150. package/models/cluster/node.js +23 -2
  151. package/models/cluster.x-k8s.io.machine.js +4 -2
  152. package/models/clusterroletemplatebinding.js +7 -0
  153. package/models/constraints.gatekeeper.sh.constraint.js +9 -0
  154. package/models/fleet.cattle.io.cluster.js +19 -10
  155. package/models/fleet.cattle.io.gitrepo.js +7 -2
  156. package/models/management.cattle.io.cluster.js +1 -1
  157. package/models/management.cattle.io.fleetworkspace.js +12 -0
  158. package/models/management.cattle.io.gitreporestriction.js +5 -0
  159. package/models/management.cattle.io.podsecurityadmissionconfigurationtemplate.js +3 -0
  160. package/models/namespace.js +5 -5
  161. package/models/provisioning.cattle.io.cluster.js +7 -5
  162. package/nuxt/App.js +210 -0
  163. package/nuxt/axios.js +186 -0
  164. package/nuxt/client.js +817 -0
  165. package/nuxt/components/nuxt-build-indicator.vue +143 -0
  166. package/nuxt/components/nuxt-child.js +122 -0
  167. package/nuxt/components/nuxt-error.vue +98 -0
  168. package/nuxt/components/nuxt-link.client.js +98 -0
  169. package/nuxt/components/nuxt-link.server.js +16 -0
  170. package/nuxt/components/nuxt-loading.vue +154 -0
  171. package/nuxt/components/nuxt.js +101 -0
  172. package/nuxt/cookie-universal-nuxt.js +9 -0
  173. package/nuxt/empty.js +1 -0
  174. package/nuxt/index.js +365 -0
  175. package/nuxt/jsonp.js +82 -0
  176. package/nuxt/loading.html +39 -0
  177. package/nuxt/middleware.js +12 -0
  178. package/nuxt/mixins/fetch.client.js +90 -0
  179. package/nuxt/mixins/fetch.server.js +69 -0
  180. package/nuxt/portal-vue.js +4 -0
  181. package/nuxt/server.js +312 -0
  182. package/nuxt/store.js +178 -0
  183. package/nuxt/utils.js +630 -0
  184. package/nuxt/views/app.template.html +9 -0
  185. package/nuxt/views/error.html +23 -0
  186. package/package.json +5 -9
  187. package/pages/auth/setup.vue +2 -2
  188. package/pages/c/_cluster/apps/charts/__tests__/install.helper.test.ts +33 -0
  189. package/pages/c/_cluster/apps/charts/chart.vue +4 -4
  190. package/pages/c/_cluster/apps/charts/install.helpers.js +26 -0
  191. package/pages/c/_cluster/apps/charts/install.vue +40 -66
  192. package/pages/c/_cluster/explorer/EventsTable.vue +5 -19
  193. package/pages/c/_cluster/explorer/index.vue +29 -25
  194. package/pages/c/_cluster/explorer/tools/index.vue +8 -8
  195. package/pages/c/_cluster/fleet/index.vue +95 -34
  196. package/pages/c/_cluster/gatekeeper/index.vue +1 -1
  197. package/pages/c/_cluster/istio/index.vue +5 -5
  198. package/pages/c/_cluster/manager/cloudCredential/index.vue +1 -1
  199. package/pages/c/_cluster/monitoring/index.vue +7 -0
  200. package/pages/c/_cluster/uiplugins/InstallDialog.vue +8 -8
  201. package/pages/c/_cluster/uiplugins/PluginInfoPanel.vue +20 -7
  202. package/pages/c/_cluster/uiplugins/index.vue +49 -17
  203. package/pages/home.vue +9 -4
  204. package/pages/index.vue +10 -1
  205. package/plugins/clean-html-directive.js +31 -0
  206. package/plugins/dashboard-store/actions.js +32 -9
  207. package/plugins/dashboard-store/mutations.js +5 -2
  208. package/plugins/dashboard-store/resource-class.js +8 -1
  209. package/plugins/steve/mutations.js +3 -2
  210. package/plugins/steve/steve-description-class.js +5 -1
  211. package/plugins/steve/subscribe.js +63 -54
  212. package/plugins/steve-create-worker.js +14 -0
  213. package/promptRemove/management.cattle.io.globalrole.vue +2 -2
  214. package/promptRemove/management.cattle.io.project.vue +2 -2
  215. package/promptRemove/management.cattle.io.roletemplate.vue +2 -2
  216. package/promptRemove/pod.vue +1 -1
  217. package/public/index.html +65 -0
  218. package/rancher-components/components/Banner/Banner.test.ts +9 -1
  219. package/rancher-components/components/Banner/Banner.vue +1 -1
  220. package/rancher-components/components/Form/Checkbox/Checkbox.vue +2 -0
  221. package/rancher-components/components/Form/Radio/RadioButton.vue +1 -1
  222. package/scripts/build-pkg.sh +1 -0
  223. package/scripts/clean +6 -0
  224. package/scripts/extension/bundle +58 -0
  225. package/scripts/extension/helmpatch +89 -0
  226. package/scripts/extension/publish +314 -0
  227. package/scripts/test-plugins-build.sh +4 -0
  228. package/store/__tests__/index.test.ts +110 -0
  229. package/store/index.js +145 -58
  230. package/store/type-map.js +26 -19
  231. package/tsconfig.default.json +36 -0
  232. package/tsconfig.json +24 -0
  233. package/types/shell/index.d.ts +420 -343
  234. package/utils/__tests__/string.test.ts +12 -0
  235. package/utils/auth.js +65 -0
  236. package/utils/monitoring.js +2 -1
  237. package/utils/position.js +5 -8
  238. package/utils/router.scrollBehavior.js +80 -0
  239. package/utils/select.js +1 -3
  240. package/utils/socket.js +1 -0
  241. package/utils/string.js +13 -0
  242. package/utils/time.js +9 -0
  243. package/vue.config.js +679 -0
  244. package/yarn-error.log +196 -0
  245. package/chart/rancher-alerting-drivers.vue +0 -53
  246. package/chart/rancher-gatekeeper.vue +0 -37
  247. package/creators/app/files/nuxt.config.js +0 -6
  248. package/models/management.cattle.io.podsecurityadmissionconfigurationtemplate.ts +0 -4
  249. package/nuxt.config.js +0 -798
@@ -0,0 +1,77 @@
1
+ <script>
2
+ import UnitInput from '@shell/components/form/UnitInput';
3
+ import ChartPsp from '@shell/components/ChartPsp';
4
+ import { Checkbox } from '@components/Form/Checkbox';
5
+ import { mapGetters } from 'vuex';
6
+
7
+ export default {
8
+ components: {
9
+ UnitInput, ChartPsp, Checkbox
10
+ },
11
+ props: {
12
+ value: {
13
+ type: Object,
14
+ default: () => {
15
+ return {};
16
+ }
17
+ },
18
+ autoInstallInfo: {
19
+ type: Array,
20
+ default: () => []
21
+ }
22
+ },
23
+
24
+ computed: {
25
+ ...mapGetters(['currentCluster']),
26
+ crdValues: {
27
+ get() {
28
+ const crdInfo = this.autoInstallInfo.find(info => info.chart.name.includes('crd'));
29
+
30
+ return crdInfo ? crdInfo.values : null;
31
+ },
32
+ set(values) {
33
+ const crdInfo = this.autoInstallInfo.find(info => info.chart.name.includes('crd'));
34
+
35
+ this.$set(crdInfo, 'values', values);
36
+ }
37
+ }
38
+ }
39
+ };
40
+ </script>
41
+ <template>
42
+ <div>
43
+ <div class="row">
44
+ <div class="col span-6">
45
+ <UnitInput
46
+ v-model="value.auditInterval"
47
+ :label="t('gatekeeperInstall.auditInterval')"
48
+ :suffix="t('suffix.seconds', {count: value.auditInterval})"
49
+ />
50
+ </div>
51
+ </div>
52
+ <div class="row mt-10">
53
+ <div class="col span-6">
54
+ <UnitInput
55
+ v-model="value.constraintViolationsLimit"
56
+ :label="t('gatekeeperInstall.constraintViolationsLimit')"
57
+ :suffix="t('gatekeeperIndex.violations')"
58
+ />
59
+ </div>
60
+ </div>
61
+
62
+ <!-- Conditionally display PSP checkbox -->
63
+ <ChartPsp
64
+ :value="value"
65
+ :cluster="currentCluster"
66
+ />
67
+
68
+ <template v-if="crdValues">
69
+ <!-- gatekeeper versions <1.0.2 do not have this option -->
70
+ <Checkbox
71
+ v-if="crdValues.enableRuntimeDefaultSeccompProfile ||crdValues.enableRuntimeDefaultSeccompProfile === false"
72
+ v-model="crdValues.enableRuntimeDefaultSeccompProfile"
73
+ :label="t('gatekeeperInstall.runtimeDefaultSeccompProfile')"
74
+ />
75
+ </template>
76
+ </div>
77
+ </template>
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,
@@ -80,6 +78,7 @@ export default {
80
78
  },
81
79
 
82
80
  computed: {
81
+ ...mapGetters(['currentCluster'], { t: 'i18n/t' }),
83
82
  valuesYaml: {
84
83
  get() {
85
84
  try {
@@ -100,8 +99,6 @@ export default {
100
99
  }
101
100
  }, 500)
102
101
  },
103
-
104
- ...mapGetters({ t: 'i18n/t' })
105
102
  },
106
103
 
107
104
  methods: {
@@ -131,116 +128,116 @@ export default {
131
128
 
132
129
  <template>
133
130
  <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>
131
+ <!-- Conditionally display PSP checkbox -->
132
+ <ChartPsp
133
+ :value="value"
134
+ :title="t('catalog.chart.global')"
135
+ :cluster="currentCluster"
136
+ />
137
+
138
+ <h3>
139
+ {{ t('istio.titles.components') }}
140
+ </h3>
141
+ <div class="row">
142
+ <div
143
+ v-if="value.cni"
144
+ class="col span-4"
145
+ >
146
+ <Checkbox
147
+ v-model="value.cni.enabled"
148
+ :label="t('istio.cni')"
149
+ @input="update"
150
+ />
167
151
  </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>
152
+ <div
153
+ v-if="value.ingressGateways"
154
+ class="col span-4"
155
+ >
156
+ <Checkbox
157
+ v-model="value.ingressGateways.enabled"
158
+ :label="t('istio.ingressGateway')"
159
+ />
196
160
  </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" />
161
+ <div
162
+ v-if="value.egressGateways"
163
+ class="col span-4"
164
+ >
165
+ <Checkbox
166
+ v-model="value.egressGateways.enabled"
167
+ :label="t('istio.egressGateway')"
168
+ />
217
169
  </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"
170
+ </div>
171
+ <div class="row">
172
+ <div
173
+ v-if="value.pilot"
174
+ class="col span-4"
175
+ >
176
+ <Checkbox
177
+ v-model="value.pilot.enabled"
178
+ :label="t('istio.pilot')"
179
+ />
180
+ </div>
181
+ <div
182
+ v-if="value.policy"
183
+ class="col span-4"
184
+ >
185
+ <Checkbox
186
+ v-model="value.policy.enabled"
187
+ :label="t('istio.policy')"
188
+ />
189
+ </div>
190
+ <div
191
+ v-if="value.telemetry"
192
+ class="col span-4"
193
+ >
194
+ <Checkbox
195
+ v-model="value.telemetry.enabled"
196
+ :label="t('istio.telemetry')"
197
+ />
198
+ </div>
199
+ </div>
200
+ <div class="row mb-20">
201
+ <div
202
+ v-if="value.kiali"
203
+ class="col span-4"
204
+ >
205
+ <Checkbox
206
+ v-model="value.kiali.enabled"
207
+ :label="t('istio.kiali')"
236
208
  />
237
- <FileSelector
238
- class="role-primary btn-sm"
239
- :label="t('generic.readFromFile')"
240
- @selected="onFileSelected"
209
+ </div>
210
+ <div
211
+ v-if="value.tracing"
212
+ class="col span-4"
213
+ >
214
+ <Checkbox
215
+ v-model="value.tracing.enabled"
216
+ :label="t('istio.tracing')"
241
217
  />
242
218
  </div>
243
- </Tab>
219
+ <div class="col span-4" />
220
+ </div>
221
+
222
+ <h3>{{ t('istio.customOverlayFile.label') }}</h3>
223
+ <div class="custom-overlay">
224
+ <Banner color="info">
225
+ <span
226
+ v-clean-html="t('istio.customOverlayFile.tip', {}, true)"
227
+ />
228
+ </Banner>
229
+ <YamlEditor
230
+ ref="yaml-editor"
231
+ class="yaml-editor mb-10"
232
+ :value="overlayFile"
233
+ @onInput="valuesChanged"
234
+ />
235
+ <FileSelector
236
+ class="role-primary btn-sm"
237
+ :label="t('generic.readFromFile')"
238
+ @selected="onFileSelected"
239
+ />
240
+ </div>
244
241
  </div>
245
242
  </template>
246
243
 
@@ -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"
@@ -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`;