@rancher/shell 3.0.0-rc.3 → 3.0.0-rc.4

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 (288) hide show
  1. package/assets/styles/base/_variables.scss +12 -4
  2. package/assets/styles/global/_layout.scss +1 -1
  3. package/assets/translations/en-us.yaml +61 -26
  4. package/assets/translations/zh-hans.yaml +6 -5
  5. package/chart/istio.vue +2 -0
  6. package/chart/monitoring/ClusterSelector.vue +2 -0
  7. package/chart/monitoring/StorageClassSelector.vue +4 -1
  8. package/chart/monitoring/index.vue +2 -0
  9. package/chart/rancher-backup/S3.vue +2 -0
  10. package/chart/rancher-backup/index.vue +2 -0
  11. package/cloud-credential/aws.vue +2 -0
  12. package/cloud-credential/azure.vue +2 -0
  13. package/cloud-credential/digitalocean.vue +2 -0
  14. package/cloud-credential/gcp.vue +2 -0
  15. package/cloud-credential/generic.vue +2 -0
  16. package/cloud-credential/harvester.vue +2 -0
  17. package/cloud-credential/linode.vue +2 -0
  18. package/cloud-credential/pnap.vue +2 -0
  19. package/cloud-credential/s3.vue +2 -0
  20. package/cloud-credential/vmwarevsphere.vue +2 -0
  21. package/components/ActionMenu.vue +4 -1
  22. package/components/AppModal.vue +4 -1
  23. package/components/ButtonDropdown.vue +3 -0
  24. package/components/ButtonGroup.vue +2 -0
  25. package/components/ButtonMultiAction.vue +41 -0
  26. package/components/Carousel.vue +3 -0
  27. package/components/CodeMirror.vue +6 -4
  28. package/components/Collapse.vue +4 -1
  29. package/components/CollapsibleCard.vue +4 -1
  30. package/components/ContainerResourceLimit.vue +2 -0
  31. package/components/CopyCode.vue +8 -4
  32. package/components/CopyToClipboardText.vue +2 -0
  33. package/components/CruResource.vue +2 -0
  34. package/components/CruResourceFooter.vue +2 -0
  35. package/components/Dialog.vue +2 -0
  36. package/components/DisableAuthProviderModal.vue +4 -1
  37. package/components/EmberPage.vue +2 -0
  38. package/components/ExplorerProjectsNamespaces.vue +11 -8
  39. package/components/GlobalRoleBindings.vue +2 -0
  40. package/components/Import.vue +2 -0
  41. package/components/InputOrDisplay.vue +23 -18
  42. package/components/Loading.vue +4 -1
  43. package/components/Markdown.vue +2 -0
  44. package/components/ModalWithCard.vue +2 -0
  45. package/components/MoveModal.vue +2 -0
  46. package/components/PodSecurityAdmission.vue +2 -0
  47. package/components/Questions/Array.vue +2 -0
  48. package/components/Questions/Boolean.vue +2 -0
  49. package/components/Questions/CloudCredential.vue +2 -0
  50. package/components/Questions/Enum.vue +2 -0
  51. package/components/Questions/Float.vue +2 -0
  52. package/components/Questions/Int.vue +2 -0
  53. package/components/Questions/QuestionMap.vue +4 -1
  54. package/components/Questions/Radio.vue +2 -0
  55. package/components/Questions/Reference.vue +2 -0
  56. package/components/Questions/String.vue +2 -0
  57. package/components/Questions/Yaml.vue +2 -0
  58. package/components/Questions/index.vue +2 -0
  59. package/components/ResourceCancelModal.vue +2 -0
  60. package/components/ResourceDetail/Masthead.vue +4 -3
  61. package/components/ResourceDetail/index.vue +17 -15
  62. package/components/ResourceTable.vue +2 -0
  63. package/components/ResourceYaml.vue +2 -0
  64. package/components/SelectIconGrid.vue +2 -0
  65. package/components/SimpleBox.vue +2 -0
  66. package/components/SortableTable/THead.vue +2 -0
  67. package/components/SortableTable/index.vue +15 -19
  68. package/components/StatusTable.vue +2 -0
  69. package/components/Tabbed/Tab.vue +2 -0
  70. package/components/Tabbed/index.vue +2 -0
  71. package/components/Wizard.vue +2 -0
  72. package/components/YamlEditor.vue +2 -0
  73. package/components/__tests__/ButtonMultiAction.test.ts +31 -0
  74. package/components/auth/RoleDetailEdit.vue +2 -0
  75. package/components/auth/SelectPrincipal.vue +2 -0
  76. package/components/auth/login/ldap.vue +2 -0
  77. package/components/form/ArrayList.vue +16 -1
  78. package/components/form/ArrayListSelect.vue +2 -0
  79. package/components/form/ChangePassword.vue +2 -0
  80. package/components/form/ColorInput.vue +2 -0
  81. package/components/form/Command.vue +2 -0
  82. package/components/form/FileImageSelector.vue +2 -0
  83. package/components/form/FileSelector.vue +2 -0
  84. package/components/form/Footer.vue +2 -0
  85. package/components/form/GitPicker.vue +1 -0
  86. package/components/form/HealthCheck.vue +5 -3
  87. package/components/form/HookOption.vue +22 -18
  88. package/components/form/InputWithSelect.vue +3 -1
  89. package/components/form/KeyValue.vue +2 -0
  90. package/components/form/LabeledSelect.vue +13 -3
  91. package/components/form/LifecycleHooks.vue +2 -0
  92. package/components/form/MatchExpressions.vue +2 -0
  93. package/components/form/Members/ClusterPermissionsEditor.vue +2 -0
  94. package/components/form/Members/MembershipEditor.vue +2 -0
  95. package/components/form/NameNsDescription.vue +4 -1
  96. package/components/form/Networking.vue +2 -0
  97. package/components/form/NodeAffinity.vue +4 -1
  98. package/components/form/Password.vue +2 -0
  99. package/components/form/PlusMinus.vue +2 -0
  100. package/components/form/PodAffinity.vue +4 -1
  101. package/components/form/Ports.vue +2 -0
  102. package/components/form/Probe.vue +8 -4
  103. package/components/form/ResourceQuota/NamespaceRow.vue +2 -0
  104. package/components/form/ResourceQuota/Project.vue +2 -0
  105. package/components/form/ResourceQuota/ProjectRow.vue +2 -0
  106. package/components/form/RuleSelector.vue +2 -0
  107. package/components/form/SecretSelector.vue +1 -0
  108. package/components/form/Security.vue +5 -2
  109. package/components/form/Select.vue +2 -1
  110. package/components/form/SelectOrCreateAuthSecret.vue +2 -0
  111. package/components/form/ServiceNameSelect.vue +2 -0
  112. package/components/form/ServicePorts.vue +2 -0
  113. package/components/form/ShellInput.vue +2 -0
  114. package/components/form/SimpleSecretSelector.vue +2 -0
  115. package/components/form/Taints.vue +2 -0
  116. package/components/form/Tolerations.vue +2 -0
  117. package/components/form/ValueFromResource.vue +2 -0
  118. package/components/form/WorkloadPorts.vue +5 -3
  119. package/components/form/__tests__/HookOption.test.ts +28 -0
  120. package/components/form/__tests__/LabeledSelect.test.ts +42 -0
  121. package/components/form/__tests__/Probe.test.ts +12 -0
  122. package/components/nav/Header.vue +17 -141
  123. package/components/nav/HeaderPageActionMenu.vue +173 -0
  124. package/components/nav/Jump.vue +2 -0
  125. package/components/nav/NamespaceFilter.vue +5 -1
  126. package/components/nav/Type.vue +28 -2
  127. package/components/nav/WindowManager/ContainerShell.vue +6 -12
  128. package/components/nav/WindowManager/index.vue +2 -0
  129. package/components/nav/__tests__/Type.test.ts +68 -24
  130. package/composables/useClickOutside.ts +81 -0
  131. package/config/product/cis.js +4 -3
  132. package/config/product/manager.js +1 -0
  133. package/config/router/routes.js +1 -1
  134. package/config/table-headers.js +0 -10
  135. package/config/uiplugins.js +186 -143
  136. package/config/version.js +10 -0
  137. package/detail/autoscaling.horizontalpodautoscaler/index.vue +2 -0
  138. package/detail/configmap.vue +2 -0
  139. package/detail/fleet.cattle.io.cluster.vue +2 -0
  140. package/detail/fleet.cattle.io.clustergroup.vue +2 -0
  141. package/detail/fleet.cattle.io.gitrepo.vue +2 -0
  142. package/detail/harvesterhci.io.management.cluster.vue +2 -0
  143. package/detail/management.cattle.io.roletemplate.vue +4 -4
  144. package/detail/management.cattle.io.user.vue +2 -0
  145. package/detail/namespace.vue +2 -0
  146. package/detail/networking.k8s.io.ingress.vue +1 -0
  147. package/detail/node.vue +2 -0
  148. package/detail/provisioning.cattle.io.cluster.vue +2 -0
  149. package/detail/secret.vue +2 -0
  150. package/detail/service.vue +2 -0
  151. package/detail/workload/index.vue +1 -1
  152. package/dialog/AddClusterMemberDialog.vue +2 -0
  153. package/dialog/AddCustomBadgeDialog.vue +3 -1
  154. package/dialog/AddProjectMemberDialog.vue +2 -0
  155. package/dialog/AddonConfigConfirmationDialog.vue +2 -0
  156. package/dialog/DeactivateDriverDialog.vue +2 -0
  157. package/dialog/DiagnosticTimingsDialog.vue +2 -0
  158. package/dialog/DrainNode.vue +2 -0
  159. package/dialog/ForceMachineRemoveDialog.vue +2 -0
  160. package/dialog/GenericPrompt.vue +2 -0
  161. package/dialog/RollbackWorkloadDialog.vue +2 -0
  162. package/dialog/RotateCertificatesDialog.vue +2 -0
  163. package/dialog/RotateEncryptionKeyDialog.vue +2 -0
  164. package/dialog/SaveAsRKETemplateDialog.vue +2 -0
  165. package/dialog/ScaleMachineDownDialog.vue +2 -0
  166. package/dialog/ScalePoolDownDialog.vue +2 -0
  167. package/dialog/SloDialog.vue +2 -0
  168. package/edit/auth/ldap/config.vue +2 -0
  169. package/edit/autoscaling.horizontalpodautoscaler/hpa-scaling-rule.vue +3 -3
  170. package/edit/autoscaling.horizontalpodautoscaler/index.vue +4 -2
  171. package/edit/catalog.cattle.io.clusterrepo.vue +2 -0
  172. package/edit/cis.cattle.io.clusterscan.vue +38 -18
  173. package/edit/cloudcredential.vue +2 -0
  174. package/edit/constraints.gatekeeper.sh.constraint/MatchKinds.vue +2 -0
  175. package/edit/constraints.gatekeeper.sh.constraint/NamespaceList.vue +2 -0
  176. package/edit/constraints.gatekeeper.sh.constraint/Scope.vue +2 -0
  177. package/edit/constraints.gatekeeper.sh.constraint/index.vue +2 -0
  178. package/edit/fleet.cattle.io.cluster.vue +2 -0
  179. package/edit/fleet.cattle.io.clustergroup.vue +4 -1
  180. package/edit/fleet.cattle.io.gitrepo.vue +2 -0
  181. package/edit/k8s.cni.cncf.io.networkattachmentdefinition.vue +2 -0
  182. package/edit/logging-flow/Match.vue +2 -0
  183. package/edit/logging-flow/index.vue +10 -8
  184. package/edit/logging.banzaicloud.io.output/providers/elasticsearch.vue +1 -1
  185. package/edit/logging.banzaicloud.io.output/providers/opensearch.vue +1 -1
  186. package/edit/logging.banzaicloud.io.output/providers/redis.vue +3 -3
  187. package/edit/management.cattle.io.fleetworkspace.vue +4 -1
  188. package/edit/management.cattle.io.project.vue +2 -0
  189. package/edit/management.cattle.io.roletemplate.vue +1 -1
  190. package/edit/monitoring.coreos.com.alertmanagerconfig/index.vue +1 -0
  191. package/edit/monitoring.coreos.com.alertmanagerconfig/types/email.vue +2 -0
  192. package/edit/monitoring.coreos.com.receiver/types/email.vue +1 -0
  193. package/edit/namespace.vue +1 -0
  194. package/edit/networking.k8s.io.ingress/Certificate.vue +2 -0
  195. package/edit/networking.k8s.io.ingress/DefaultBackend.vue +2 -1
  196. package/edit/networking.k8s.io.ingress/Rule.vue +1 -0
  197. package/edit/networking.k8s.io.ingress/RulePath.vue +20 -23
  198. package/edit/networking.k8s.io.ingress/index.vue +1 -0
  199. package/edit/networking.k8s.io.networkpolicy/PolicyRulePort.vue +1 -1
  200. package/edit/networking.k8s.io.networkpolicy/index.vue +1 -0
  201. package/edit/node.vue +2 -0
  202. package/edit/persistentvolumeclaim.vue +1 -0
  203. package/edit/policy.poddisruptionbudget.vue +3 -1
  204. package/edit/provisioning.cattle.io.cluster/CustomCommand.vue +2 -0
  205. package/edit/provisioning.cattle.io.cluster/Labels.vue +2 -0
  206. package/edit/provisioning.cattle.io.cluster/SelectCredential.vue +2 -0
  207. package/edit/provisioning.cattle.io.cluster/import.vue +2 -0
  208. package/edit/provisioning.cattle.io.cluster/index.vue +2 -2
  209. package/edit/provisioning.cattle.io.cluster/rke2.vue +38 -13
  210. package/edit/provisioning.cattle.io.cluster/tabs/AddOnAdditionalManifest.vue +49 -0
  211. package/edit/provisioning.cattle.io.cluster/tabs/AddOnConfig.vue +32 -65
  212. package/edit/provisioning.cattle.io.cluster/tabs/AgentConfiguration.vue +2 -0
  213. package/edit/provisioning.cattle.io.cluster/tabs/Basics.vue +2 -0
  214. package/edit/provisioning.cattle.io.cluster/tabs/MachinePool.vue +2 -0
  215. package/edit/provisioning.cattle.io.cluster/tabs/etcd/S3Config.vue +2 -0
  216. package/edit/provisioning.cattle.io.cluster/tabs/etcd/index.vue +2 -0
  217. package/edit/provisioning.cattle.io.cluster/tabs/networking/index.vue +2 -0
  218. package/edit/provisioning.cattle.io.cluster/tabs/registries/RegistryConfigs.vue +2 -0
  219. package/edit/provisioning.cattle.io.cluster/tabs/registries/index.vue +1 -0
  220. package/edit/provisioning.cattle.io.cluster/tabs/upgrade/DrainOptions.vue +2 -0
  221. package/edit/resources.cattle.io.backup.vue +2 -2
  222. package/edit/secret/index.vue +2 -0
  223. package/edit/service.vue +2 -1
  224. package/edit/ui.cattle.io.navlink.vue +1 -0
  225. package/edit/workload/Job.vue +3 -2
  226. package/edit/workload/Upgrading.vue +1 -0
  227. package/edit/workload/index.vue +18 -7
  228. package/edit/workload/storage/ContainerMountPaths.vue +37 -97
  229. package/edit/workload/storage/awsElasticBlockStore.vue +1 -1
  230. package/edit/workload/storage/azureDisk.vue +1 -1
  231. package/edit/workload/storage/csi/driver.longhorn.io.vue +2 -0
  232. package/edit/workload/storage/ephemeralVolume/index.vue +2 -0
  233. package/edit/workload/storage/gcePersistentDisk.vue +1 -1
  234. package/edit/workload/storage/index.vue +38 -22
  235. package/edit/workload/storage/persistentVolumeClaim/index.vue +2 -0
  236. package/edit/workload/storage/persistentVolumeClaim/persistentvolumeclaim.vue +1 -0
  237. package/edit/workload/storage/vsphereVolume.vue +1 -1
  238. package/initialize/install-components.js +0 -12
  239. package/initialize/install-plugins.js +4 -5
  240. package/machine-config/azure.vue +2 -0
  241. package/machine-config/generic.vue +2 -0
  242. package/machine-config/vmwarevsphere.vue +2 -0
  243. package/mixins/resource-manager.js +1 -1
  244. package/models/cis.cattle.io.clusterscan.js +17 -16
  245. package/models/cis.cattle.io.clusterscanprofile.js +17 -0
  246. package/models/management.cattle.io.user.js +3 -3
  247. package/models/provisioning.cattle.io.cluster.js +2 -1
  248. package/models/steve-schema.ts +1 -1
  249. package/models/workload.js +2 -1
  250. package/package.json +4 -6
  251. package/pages/c/_cluster/apps/charts/chart.vue +3 -1
  252. package/pages/c/_cluster/apps/charts/install.vue +5 -56
  253. package/pages/c/_cluster/fleet/index.vue +0 -1
  254. package/pages/c/_cluster/monitoring/alertmanagerconfig/_alertmanagerconfigid/receiver.vue +1 -0
  255. package/pages/c/_cluster/settings/DefaultLinksEditor.vue +2 -0
  256. package/pages/c/_cluster/settings/performance.vue +2 -2
  257. package/pages/c/_cluster/uiplugins/AddExtensionRepos.vue +11 -16
  258. package/pages/c/_cluster/uiplugins/CatalogList/CatalogLoadDialog.vue +2 -0
  259. package/pages/c/_cluster/uiplugins/CatalogList/CatalogUninstallDialog.vue +2 -0
  260. package/pages/c/_cluster/uiplugins/CatalogList/index.vue +2 -0
  261. package/pages/c/_cluster/uiplugins/DeveloperInstallDialog.vue +6 -3
  262. package/pages/c/_cluster/uiplugins/InstallDialog.vue +2 -0
  263. package/pages/c/_cluster/uiplugins/PluginInfoPanel.vue +7 -17
  264. package/pages/c/_cluster/uiplugins/UninstallDialog.vue +2 -0
  265. package/pages/c/_cluster/uiplugins/__tests__/AddExtensionRepos.test.ts +3 -6
  266. package/pages/c/_cluster/uiplugins/index.vue +93 -92
  267. package/pkg/vue.config.js +2 -0
  268. package/plugins/plugin.js +27 -19
  269. package/plugins/version.js +3 -13
  270. package/promptRemove/pod.vue +2 -0
  271. package/rancher-components/Form/LabeledInput/LabeledInput.vue +14 -8
  272. package/rancher-components/Form/Radio/RadioButton.vue +0 -1
  273. package/rancher-components/Form/TextArea/TextAreaAutoGrow.vue +17 -9
  274. package/rancher-components/StringList/StringList.vue +6 -15
  275. package/scripts/extension/bundle +1 -1
  276. package/scripts/extension/publish +174 -99
  277. package/store/catalog.js +0 -26
  278. package/store/growl.js +8 -5
  279. package/utils/cluster.js +9 -0
  280. package/utils/versions.ts +39 -0
  281. package/vue.config.js +5 -0
  282. package/components/form/PodSecurity.vue +0 -168
  283. package/components/formatter/Weight.vue +0 -147
  284. package/components/nuxt/nuxt-build-indicator.vue +0 -170
  285. package/components/nuxt/nuxt-child.js +0 -52
  286. package/components/nuxt/nuxt-error.vue +0 -128
  287. package/components/nuxt/nuxt-link.client.js +0 -17
  288. package/components/nuxt/nuxt-loading.vue +0 -165
@@ -6,6 +6,7 @@ import { get, set } from '@shell/utils/object';
6
6
  import debounce from 'lodash/debounce';
7
7
 
8
8
  export default {
9
+ emits: ['update:value', 'remove'],
9
10
  components: {
10
11
  InputWithSelect, LabeledInput, Select
11
12
  },
@@ -180,36 +181,27 @@ export default {
180
181
  </div>
181
182
  </template>
182
183
  <style lang="scss" scoped>
184
+ // TODO #11952: Correct deep statement
183
185
  $row-height: 40px;
184
-
185
- .labeled-input :deep(), :deep() .labeled-input {
186
- padding: 0 !important;
187
- height: 100%;
188
- input.no-label {
189
- height: calc($row-height - 2px);
190
- padding: 10px;
191
- }
192
- }
193
- .rule-path :deep() {
194
- .col, INPUT {
195
- height: $row-height;
196
- }
197
-
198
- .unlabeled-select {
186
+ .rule-path {
187
+ :deep(.labeled-input) {
188
+ padding: 0 !important;
199
189
  height: 100%;
200
- }
201
190
 
202
- .path-type {
203
- .unlabeled-select {
204
- min-width: 200px;
191
+ input.no-label {
192
+ height: calc($row-height - 2px);
193
+ padding: 10px;
205
194
  }
206
195
  }
207
196
 
208
- &, .input-container {
197
+ :deep(.col), INPUT {
198
+ height: $row-height;
199
+ }
200
+ &, :deep(.input-container) {
209
201
  height: $row-height;
210
202
  }
211
203
 
212
- .input-container .in-input.unlabeled-select {
204
+ :deep(.input-container) :deep(.in-input.unlabeled-select) {
213
205
  width: initial;
214
206
  }
215
207
 
@@ -217,11 +209,16 @@ $row-height: 40px;
217
209
  line-height: $row-height;
218
210
  }
219
211
 
220
- .v-select INPUT {
212
+ :deep(.v-select) INPUT {
221
213
  height: 50px;
222
214
  }
223
- .labeled-input {
215
+ :deep(.labeled-input) {
224
216
  padding-top: 6px;
225
217
  }
218
+
219
+ :deep(.unlabeled-select) {
220
+ height: 100%;
221
+ min-width: 200px;
222
+ }
226
223
  }
227
224
  </style>
@@ -20,6 +20,7 @@ import { FilterArgs, PaginationParamFilter } from '@shell/types/store/pagination
20
20
 
21
21
  export default {
22
22
  name: 'CRUIngress',
23
+ emits: ['input'],
23
24
  inheritAttrs: false,
24
25
  components: {
25
26
  IngressClass,
@@ -28,7 +28,7 @@ export default {
28
28
  <div class="row">
29
29
  <div class="col span-4">
30
30
  <LabeledInput
31
- v-model.number="value.port"
31
+ v-model:value.number="value.port"
32
32
  :mode="mode"
33
33
  type="number"
34
34
  min="1"
@@ -22,6 +22,7 @@ const POLICY_TYPES = {
22
22
  };
23
23
 
24
24
  export default {
25
+ emits: ['input'],
25
26
  // Props are found in CreateEditView
26
27
  // props: {},
27
28
  inheritAttrs: false,
package/edit/node.vue CHANGED
@@ -8,6 +8,8 @@ import CruResource from '@shell/components/CruResource';
8
8
  import NameNsDescription from '@shell/components/form/NameNsDescription';
9
9
 
10
10
  export default {
11
+ emits: ['input'],
12
+
11
13
  components: {
12
14
  CruResource,
13
15
  Labels,
@@ -21,6 +21,7 @@ const DEFAULT_STORAGE = '10Gi';
21
21
 
22
22
  export default {
23
23
  name: 'PersistentVolumeClaim',
24
+ emits: ['input'],
24
25
  inheritAttrs: false,
25
26
  components: {
26
27
  Banner,
@@ -11,7 +11,9 @@ import { POD } from '@shell/config/types';
11
11
  import FormValidation from '@shell/mixins/form-validation';
12
12
 
13
13
  export default {
14
- name: 'PodDisruptionBudget',
14
+ name: 'PodDisruptionBudget',
15
+ emits: ['input'],
16
+
15
17
  inheritAttrs: false,
16
18
  components: {
17
19
  ResourceSelector,
@@ -11,6 +11,8 @@ import { MANAGEMENT } from '@shell/config/types';
11
11
  import { sanitizeKey, sanitizeIP, sanitizeValue } from '@shell/utils/string';
12
12
 
13
13
  export default {
14
+ emits: ['copied-windows'],
15
+
14
16
  components: {
15
17
  Banner, Checkbox, CopyCode, InfoBox, KeyValue, LabeledInput, Taints
16
18
  },
@@ -3,6 +3,8 @@ import Labels from '@shell/components/form/Labels';
3
3
  import Tab from '@shell/components/Tabbed/Tab';
4
4
 
5
5
  export default {
6
+ emits: ['update:value', 'input'],
7
+
6
8
  components: { Labels, Tab },
7
9
 
8
10
  props: {
@@ -14,6 +14,8 @@ const _NEW = '_NEW';
14
14
  const _NONE = '_NONE';
15
15
 
16
16
  export default {
17
+ emits: ['update:value', 'credential-created'],
18
+
17
19
  components: {
18
20
  Loading, LabeledSelect, CruResource, NameNsDescription, Banner
19
21
  },
@@ -20,6 +20,8 @@ import AgentEnv from '@shell/edit/provisioning.cattle.io.cluster/AgentEnv';
20
20
  const HARVESTER_HIDE_KEY = 'cm-harvester-import';
21
21
 
22
22
  export default {
23
+ emits: ['input'],
24
+
23
25
  components: {
24
26
  Banner,
25
27
  ClusterMembershipEditor,
@@ -39,6 +39,8 @@ const PROXY_ENDPOINT = '/meta/proxy';
39
39
  export default {
40
40
  name: 'CruCluster',
41
41
 
42
+ emits: ['update:value', 'set-subtype', 'input'],
43
+
42
44
  components: {
43
45
  CruResource,
44
46
  EmberPage,
@@ -51,8 +53,6 @@ export default {
51
53
 
52
54
  mixins: [CreateEditView],
53
55
 
54
- emits: ['set-subtype'],
55
-
56
56
  inheritAttrs: false,
57
57
 
58
58
  props: {
@@ -29,7 +29,7 @@ import { sortBy } from '@shell/utils/sort';
29
29
  import { vspherePoolConfigMerge } from '@shell/machine-config/vmwarevsphere-pool-config-merge';
30
30
 
31
31
  import { compare, sortable } from '@shell/utils/version';
32
- import { isHarvesterSatisfiesVersion } from '@shell/utils/cluster';
32
+ import { isHarvesterSatisfiesVersion, labelForAddon } from '@shell/utils/cluster';
33
33
 
34
34
  import { BadgeState } from '@components/BadgeState';
35
35
  import { Banner } from '@components/Banner';
@@ -62,6 +62,7 @@ import Registries from '@shell/edit/provisioning.cattle.io.cluster/tabs/registri
62
62
  import AddOnConfig from '@shell/edit/provisioning.cattle.io.cluster/tabs/AddOnConfig';
63
63
  import Advanced from '@shell/edit/provisioning.cattle.io.cluster/tabs/Advanced';
64
64
  import ClusterAppearance from '@shell/components/form/ClusterAppearance';
65
+ import AddOnAdditionalManifest from '@shell/edit/provisioning.cattle.io.cluster/tabs/AddOnAdditionalManifest';
65
66
 
66
67
  const HARVESTER = 'harvester';
67
68
  const HARVESTER_CLOUD_PROVIDER = 'harvester-cloud-provider';
@@ -92,6 +93,8 @@ const FLEET_AGENT_CUSTOMIZATION = 'fleetAgentDeploymentCustomization';
92
93
  const isAzureK8sUnsupported = (version) => semver.gte(version, '1.30.0');
93
94
 
94
95
  export default {
96
+ emits: ['update:value', 'input'],
97
+
95
98
  components: {
96
99
  AgentEnv,
97
100
  BadgeState,
@@ -113,7 +116,8 @@ export default {
113
116
  Registries,
114
117
  AddOnConfig,
115
118
  Advanced,
116
- ClusterAppearance
119
+ ClusterAppearance,
120
+ AddOnAdditionalManifest
117
121
  },
118
122
 
119
123
  mixins: [CreateEditView, FormValidation],
@@ -246,6 +250,7 @@ export default {
246
250
  machinePoolErrors: {},
247
251
  allNamespaces: [],
248
252
  extensionTabs: getApplicableExtensionEnhancements(this, ExtensionPoint.TAB, TabLocation.CLUSTER_CREATE_RKE2, this.$route, this),
253
+ labelForAddon
249
254
  };
250
255
  },
251
256
 
@@ -1544,7 +1549,7 @@ export default {
1544
1549
  versionName: entry.version,
1545
1550
  });
1546
1551
 
1547
- this.versionInfo.chartName = res;
1552
+ this.versionInfo[chartName] = res;
1548
1553
  const key = this.chartVersionKey(chartName);
1549
1554
 
1550
1555
  if (!this.userChartValues[key]) {
@@ -1561,14 +1566,16 @@ export default {
1561
1566
  this.addonNames.forEach((name) => {
1562
1567
  const chartValues = this.versionInfo[name]?.questions ? this.initYamlEditor(name) : {};
1563
1568
 
1564
- this.userChartValuesTemp.name = chartValues;
1569
+ this.userChartValuesTemp[name] = chartValues;
1565
1570
  });
1566
1571
  this.refreshComponentWithYamls(key);
1567
1572
  },
1568
1573
  refreshComponentWithYamls(key) {
1569
1574
  const component = this.$refs[key];
1570
1575
 
1571
- if (component) {
1576
+ if (Array.isArray(component) && component.length > 0) {
1577
+ this.refreshYamls(component[0].$refs);
1578
+ } else if (component) {
1572
1579
  this.refreshYamls(component.$refs);
1573
1580
  }
1574
1581
  },
@@ -1587,7 +1594,7 @@ export default {
1587
1594
  },
1588
1595
 
1589
1596
  updateValues(name, values) {
1590
- this.userChartValuesTemp.name = values;
1597
+ this.userChartValuesTemp[name] = values;
1591
1598
  this.syncChartValues(name);
1592
1599
  },
1593
1600
 
@@ -1871,7 +1878,7 @@ export default {
1871
1878
  const userValues = this.userChartValues[key];
1872
1879
 
1873
1880
  if (userValues) {
1874
- rkeConfig.chartValues.name = userValues;
1881
+ rkeConfig.chartValues[name] = userValues;
1875
1882
  }
1876
1883
  });
1877
1884
  },
@@ -2382,24 +2389,42 @@ export default {
2382
2389
  />
2383
2390
  </Tab>
2384
2391
 
2385
- <!-- Add-on Config -->
2392
+ <!-- Add-on Configs -->
2386
2393
  <Tab
2387
- name="addons"
2388
- label-key="cluster.tabs.addons"
2389
- @active="showAddons('tab-addOnConfig')"
2394
+ v-for="v in addonVersions"
2395
+ :key="v.name"
2396
+ :name="v.name"
2397
+ :label="labelForAddon($store, v.name, false)"
2398
+ :weight="9"
2399
+ :showHeader="false"
2400
+ @active="showAddons(v.name)"
2390
2401
  >
2391
2402
  <AddOnConfig
2392
- ref="tab-addOnConfig"
2403
+ :ref="v.name"
2393
2404
  v-model:value="localValue"
2394
2405
  :mode="mode"
2395
2406
  :version-info="versionInfo"
2396
- :addon-versions="addonVersions"
2407
+ :addon-version="v"
2397
2408
  :addons-rev="addonsRev"
2398
2409
  :user-chart-values-temp="userChartValuesTemp"
2399
2410
  :init-yaml-editor="initYamlEditor"
2400
2411
  @update:value="$emit('input', $event)"
2401
2412
  @update-questions="syncChartValues"
2402
2413
  @update-values="updateValues"
2414
+ />
2415
+ </Tab>
2416
+
2417
+ <!-- Add-on Additional Manifest -->
2418
+ <Tab
2419
+ name="additionalmanifest"
2420
+ label-key="cluster.tabs.addOnAdditionalManifest"
2421
+ :showHeader="false"
2422
+ @active="refreshComponentWithYamls('additionalmanifest')"
2423
+ >
2424
+ <AddOnAdditionalManifest
2425
+ ref="additionalmanifest"
2426
+ :value="value"
2427
+ :mode="mode"
2403
2428
  @additional-manifest-changed="updateAdditionalManifest"
2404
2429
  />
2405
2430
  </Tab>
@@ -0,0 +1,49 @@
1
+ <script>
2
+ import YamlEditor from '@shell/components/YamlEditor';
3
+ export default {
4
+ components: { YamlEditor },
5
+
6
+ emits: ['additional-manifest-changed'],
7
+
8
+ props: {
9
+ mode: {
10
+ type: String,
11
+ required: true,
12
+ },
13
+ value: {
14
+ type: Object,
15
+ required: true,
16
+ }
17
+ },
18
+
19
+ computed: {
20
+ additionalManifest: {
21
+ get() {
22
+ return this.value.spec.rkeConfig.additionalManifest;
23
+ },
24
+ set(neu) {
25
+ this.$emit('additional-manifest-changed', neu);
26
+ }
27
+ }
28
+ }
29
+ };
30
+ </script>
31
+
32
+ <template>
33
+ <div>
34
+ <h3>
35
+ {{ t('cluster.addOns.additionalManifest.title') }}
36
+ <i
37
+ v-clean-tooltip="t('cluster.addOns.additionalManifest.tooltip')"
38
+ class="icon icon-info"
39
+ />
40
+ </h3>
41
+ <YamlEditor
42
+ ref="yaml-additional"
43
+ v-model:value="additionalManifest"
44
+ :editor-mode="mode === 'view' ? 'VIEW_CODE' : 'EDIT_CODE'"
45
+ initial-yaml-values="# Additional Manifest YAML"
46
+ class="yaml-editor"
47
+ />
48
+ </div>
49
+ </template>
@@ -3,10 +3,12 @@ import { Banner } from '@components/Banner';
3
3
 
4
4
  import Questions from '@shell/components/Questions';
5
5
  import YamlEditor from '@shell/components/YamlEditor';
6
- import { camelToTitle } from '@shell/utils/string';
6
+ import { labelForAddon } from '@shell/utils/cluster';
7
7
  import { _EDIT } from '@shell/config/query-params';
8
8
 
9
9
  export default {
10
+ emits: ['additional-manifest-changed', 'update-questions', 'update-values'],
11
+
10
12
  components: {
11
13
  Banner,
12
14
  Questions,
@@ -29,8 +31,8 @@ export default {
29
31
  required: true,
30
32
  },
31
33
 
32
- addonVersions: {
33
- type: Array,
34
+ addonVersion: {
35
+ type: Object,
34
36
  required: false,
35
37
  default: null
36
38
  },
@@ -50,28 +52,15 @@ export default {
50
52
 
51
53
  },
52
54
 
55
+ data() {
56
+ return { labelForAddon };
57
+ },
58
+
53
59
  computed: {
54
- additionalManifest: {
55
- get() {
56
- return this.value.spec.rkeConfig.additionalManifest;
57
- },
58
- set(neu) {
59
- this.$emit('additional-manifest-changed', neu);
60
- }
61
- },
62
60
  isEdit() {
63
61
  return this.mode === _EDIT;
64
- },
65
- },
66
-
67
- methods: {
68
-
69
- labelForAddon(name) {
70
- const fallback = `${ camelToTitle(name.replace(/^(rke|rke2|rancher)-/, '')) } Configuration`;
71
-
72
- return this.$store.getters['i18n/withFallback'](`cluster.addonChart."${ name }"`, null, fallback);
73
- },
74
- },
62
+ }
63
+ }
75
64
  };
76
65
  </script>
77
66
 
@@ -84,54 +73,32 @@ export default {
84
73
  {{ t('cluster.addOns.dependencyBanner') }}
85
74
  </Banner>
86
75
  <div
87
- v-if="versionInfo && addonVersions.length"
76
+ v-if="versionInfo && addonVersion"
88
77
  :key="addonsRev"
89
78
  >
90
- <div
91
- v-for="(v, i) in addonVersions"
92
- :key="i"
93
- >
94
- <h3>{{ labelForAddon(v.name) }}</h3>
95
- <Questions
96
- v-if="versionInfo[v.name] && versionInfo[v.name].questions && v.name && userChartValuesTemp[v.name]"
97
- v-model:value="userChartValuesTemp[v.name]"
98
- :emit="true"
99
- in-store="management"
100
- :mode="mode"
101
- :tabbed="false"
102
- :source="versionInfo[v.name]"
103
- :target-namespace="value.metadata.namespace"
104
- @updated="$emit('update-questions', v.name)"
105
- />
106
- <YamlEditor
107
- v-else
108
- ref="yaml-values"
109
- :value="initYamlEditor(v.name)"
110
- :scrolling="true"
111
- :as-object="true"
112
- :editor-mode="mode === 'view' ? 'VIEW_CODE' : 'EDIT_CODE'"
113
- :hide-preview-buttons="true"
114
- @update:value="data => $emit('update-values', v.name, data)"
115
- />
116
- <div class="spacer" />
117
- </div>
118
- </div>
119
-
120
- <div>
121
- <h3>
122
- {{ t('cluster.addOns.additionalManifest.title') }}
123
- <i
124
- v-clean-tooltip="t('cluster.addOns.additionalManifest.tooltip')"
125
- class="icon icon-info"
126
- />
127
- </h3>
79
+ <h3>{{ labelForAddon($store, addonVersion.name) }}</h3>
80
+ <Questions
81
+ v-if="versionInfo[addonVersion.name] && versionInfo[addonVersion.name].questions && addonVersion.name && userChartValuesTemp[addonVersion.name]"
82
+ v-model:value="userChartValuesTemp[addonVersion.name]"
83
+ :emit="true"
84
+ in-store="management"
85
+ :mode="mode"
86
+ :tabbed="false"
87
+ :source="versionInfo[addonVersion.name]"
88
+ :target-namespace="value.metadata.namespace"
89
+ @updated="$emit('update-questions', addonVersion.name)"
90
+ />
128
91
  <YamlEditor
129
- ref="yaml-additional"
130
- v-model:value="additionalManifest"
92
+ v-else
93
+ ref="yaml-values"
94
+ :value="initYamlEditor(addonVersion.name)"
95
+ :scrolling="true"
96
+ :as-object="true"
131
97
  :editor-mode="mode === 'view' ? 'VIEW_CODE' : 'EDIT_CODE'"
132
- initial-yaml-values="# Additional Manifest YAML"
133
- class="yaml-editor"
98
+ :hide-preview-buttons="true"
99
+ @input="data => $emit('update-values', addonVersion.name, data)"
134
100
  />
101
+ <div class="spacer" />
135
102
  </div>
136
103
  </div>
137
104
  </template>
@@ -16,6 +16,8 @@ const CUSTOM = 'custom';
16
16
  // This is the form for Agent Configuration
17
17
  // Used for both Cluster Agent and Fleet Agent configuration
18
18
  export default {
19
+ emits: ['input'],
20
+
19
21
  components: {
20
22
  Banner,
21
23
  ContainerResourceLimit,
@@ -16,6 +16,8 @@ import { _CREATE, _EDIT } from '@shell/config/query-params';
16
16
  const HARVESTER = 'harvester';
17
17
 
18
18
  export default {
19
+ emits: ['enabled-system-services-changed', 'cilium-values-changed', 'kubernetes-changed', 'show-deprecated-patch-versions-changed', 'cis-changed', 'psa-default-changed'],
20
+
19
21
  components: {
20
22
  Banner,
21
23
  Checkbox,
@@ -13,6 +13,8 @@ export default {
13
13
 
14
14
  name: 'MachinePool',
15
15
 
16
+ emits: ['validationChanged', 'error'],
17
+
16
18
  components: {
17
19
  LabeledInput,
18
20
  Checkbox,
@@ -5,6 +5,8 @@ import SelectOrCreateAuthSecret from '@shell/components/form/SelectOrCreateAuthS
5
5
  import { NORMAN } from '@shell/config/types';
6
6
 
7
7
  export default {
8
+ emits: ['update:value'],
9
+
8
10
  components: {
9
11
  LabeledInput,
10
12
  Checkbox,
@@ -7,6 +7,8 @@ import S3Config from '@shell/edit/provisioning.cattle.io.cluster/tabs/etcd/S3Con
7
7
  import UnitInput from '@shell/components/form/UnitInput';
8
8
 
9
9
  export default {
10
+ emits: ['s3-backup-changed', 'config-etcd-expose-metrics-changed'],
11
+
10
12
  components: {
11
13
  LabeledInput,
12
14
  RadioGroup,
@@ -9,6 +9,8 @@ import ACE from '@shell/edit/provisioning.cattle.io.cluster/tabs/networking/ACE'
9
9
  const NETBIOS_TRUNCATION_LENGTH = 15;
10
10
 
11
11
  export default {
12
+ emits: ['update:value', 'truncate-hostname', 'input'],
13
+
12
14
  components: {
13
15
  LabeledInput,
14
16
  Banner,
@@ -9,6 +9,8 @@ import { SECRET_TYPES as TYPES } from '@shell/config/secret';
9
9
  import { base64Decode, base64Encode } from '@shell/utils/crypto';
10
10
 
11
11
  export default {
12
+ emits: ['updateConfigs'],
13
+
12
14
  components: {
13
15
  ArrayListGrouped,
14
16
  LabeledInput,
@@ -8,6 +8,7 @@ import RegistryConfigs from '@shell/edit/provisioning.cattle.io.cluster/tabs/reg
8
8
  import RegistryMirrors from '@shell/edit/provisioning.cattle.io.cluster/tabs/registries/RegistryMirrors';
9
9
 
10
10
  export default {
11
+ emits: ['custom-registry-changed', 'registry-host-changed', 'registry-secret-changed', 'input', 'update-configs-changed'],
11
12
  components: {
12
13
  LabeledInput,
13
14
  Banner,
@@ -16,6 +16,8 @@ const DEFAULTS = {
16
16
  };
17
17
 
18
18
  export default {
19
+ emits: ['update:value'],
20
+
19
21
  components: {
20
22
  RadioGroup, Checkbox, UnitInput
21
23
  },
@@ -13,7 +13,7 @@ import S3 from '@shell/chart/rancher-backup/S3';
13
13
  import { mapGetters } from 'vuex';
14
14
  import { SECRET, BACKUP_RESTORE, CATALOG } from '@shell/config/types';
15
15
  import { allHash } from '@shell/utils/promise';
16
- import { NAMESPACE, _VIEW } from '@shell/config/query-params';
16
+ import { NAMESPACE, _VIEW, _CREATE } from '@shell/config/query-params';
17
17
  import { sortBy } from '@shell/utils/sort';
18
18
  import { get } from '@shell/utils/object';
19
19
  import { formatEncryptionSecretNames } from '@shell/utils/formatter';
@@ -88,7 +88,7 @@ export default {
88
88
  this.value['spec'] = { retentionCount: 10 };
89
89
  }
90
90
  let s3 = {};
91
- let useEncryption = false;
91
+ let useEncryption = this.mode === _CREATE;
92
92
  let setSchedule = false;
93
93
  let storageSource = 'useDefault';
94
94
 
@@ -32,6 +32,8 @@ const creatableTypes = [
32
32
  export default {
33
33
  name: 'CruSecret',
34
34
 
35
+ emits: ['set-subtype', 'input'],
36
+
35
37
  components: {
36
38
  LabeledInput,
37
39
  LabeledSelect,
package/edit/service.vue CHANGED
@@ -41,6 +41,7 @@ const SESSION_AFFINITY_ACTION_LABELS = {
41
41
  const SESSION_STICKY_TIME_DEFAULT = 10800;
42
42
 
43
43
  export default {
44
+ emits: ['set-subtype'],
44
45
  // Props are found in CreateEditView
45
46
  // props: {},
46
47
  inheritAttrs: false,
@@ -377,7 +378,7 @@ export default {
377
378
  <LabeledInput
378
379
  v-else
379
380
  ref="external-name"
380
- v-model.number="value.spec.externalName"
381
+ v-model:value.number="value.spec.externalName"
381
382
  :mode="mode"
382
383
  :label="t('servicesPage.externalName.input.label')"
383
384
  :placeholder="t('servicesPage.externalName.placeholder')"
@@ -20,6 +20,7 @@ const LINK_TARGET_BLANK = '_blank';
20
20
  const LINK_TARGET_SELF = '_self';
21
21
 
22
22
  export default {
23
+ emits: ['update:value.spec.iconSrc ', 'input'],
23
24
  mixins: [CreateEditView, FormValidation],
24
25
  components: {
25
26
  CruResource,