@rancher/shell 3.0.2-rc.5 → 3.0.2

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 (219) hide show
  1. package/assets/images/providers/nutanix.svg +12 -1
  2. package/assets/styles/base/_basic.scss +2 -1
  3. package/assets/styles/base/_helpers.scss +4 -0
  4. package/assets/styles/base/_variables.scss +2 -0
  5. package/assets/styles/global/_labeled-input.scss +5 -13
  6. package/assets/styles/global/_layout.scss +4 -1
  7. package/assets/styles/global/_select.scss +5 -0
  8. package/assets/styles/themes/_dark.scss +1 -3
  9. package/assets/styles/themes/_light.scss +5 -1
  10. package/assets/translations/en-us.yaml +130 -23
  11. package/assets/translations/zh-hans.yaml +0 -3
  12. package/cloud-credential/azure.vue +1 -1
  13. package/components/ActionMenuShell.vue +105 -0
  14. package/components/AppModal.vue +2 -2
  15. package/components/AsyncButton.vue +2 -0
  16. package/components/ButtonGroup.vue +9 -2
  17. package/components/ClusterBadge.vue +1 -0
  18. package/components/ClusterIconMenu.vue +3 -0
  19. package/components/ClusterProviderIcon.vue +14 -1
  20. package/components/CodeMirror.vue +96 -5
  21. package/components/Collapse.vue +16 -3
  22. package/components/CruResource.vue +9 -0
  23. package/components/CruResourceFooter.vue +1 -1
  24. package/components/ExplorerMembers.vue +2 -1
  25. package/components/FixedBanner.vue +19 -12
  26. package/components/Import.vue +14 -1
  27. package/components/LandingPagePreference.vue +4 -2
  28. package/components/PodSecurityAdmission.vue +8 -6
  29. package/components/PromptChangePassword.vue +1 -0
  30. package/components/PromptRemove.vue +23 -21
  31. package/components/ResourceDetail/Masthead.vue +30 -11
  32. package/components/ResourceDetail/__tests__/Masthead.test.ts +61 -0
  33. package/components/ResourceDetail/index.vue +6 -0
  34. package/components/ResourceTable.vue +6 -1
  35. package/components/ResourceYaml.vue +1 -0
  36. package/components/Setting.vue +115 -0
  37. package/components/SortableTable/THead.vue +2 -0
  38. package/components/SortableTable/index.vue +7 -12
  39. package/components/StatusBadge.vue +71 -0
  40. package/components/Tabbed/index.vue +16 -15
  41. package/components/Wizard.vue +108 -104
  42. package/components/YamlEditor.vue +12 -2
  43. package/components/__tests__/Collapse.test.ts +2 -2
  44. package/components/__tests__/FixedBanner.test.ts +3 -3
  45. package/components/auth/Principal.vue +29 -17
  46. package/components/auth/__tests__/Principal.test.ts +40 -0
  47. package/components/auth/login/ldap.vue +7 -0
  48. package/components/fleet/FleetBundles.vue +1 -1
  49. package/components/fleet/FleetRepos.vue +1 -1
  50. package/components/fleet/FleetResources.vue +0 -2
  51. package/components/fleet/FleetSummary.vue +60 -65
  52. package/components/fleet/ForceDirectedTreeChart/index.vue +5 -1
  53. package/components/fleet/__tests__/FleetSummary.test.ts +49 -9
  54. package/components/form/ArrayList.vue +6 -2
  55. package/components/form/ColorInput.vue +1 -0
  56. package/components/form/KeyValue.vue +11 -12
  57. package/components/form/LabeledSelect.vue +15 -3
  58. package/components/form/Labels.vue +8 -1
  59. package/components/form/Members/MembershipEditor.vue +230 -222
  60. package/components/form/Members/__tests__/MembershipEditor.test.ts +62 -0
  61. package/components/form/Password.vue +3 -0
  62. package/components/form/ProjectMemberEditor.vue +6 -3
  63. package/components/form/ResourceTabs/index.vue +15 -13
  64. package/components/form/SSHKnownHosts/KnownHostsEditDialog.vue +5 -4
  65. package/components/form/SchedulingCustomization.vue +85 -0
  66. package/components/form/Select.vue +3 -2
  67. package/components/form/SelectOrCreateAuthSecret.vue +2 -1
  68. package/components/form/UnitInput.vue +3 -4
  69. package/components/form/__tests__/ArrayList.test.ts +9 -6
  70. package/components/form/__tests__/LabeledSelect.test.ts +37 -0
  71. package/components/form/__tests__/SelectOrCreateAuthSecret.test.ts +34 -0
  72. package/components/form/__tests__/UnitInput.test.ts +4 -5
  73. package/components/formatter/LiveDate.vue +3 -1
  74. package/components/formatter/ServiceType.vue +12 -4
  75. package/components/formatter/WorkloadHealthScale.vue +2 -1
  76. package/components/nav/Header.vue +35 -2
  77. package/components/nav/HeaderPageActionMenu.vue +11 -40
  78. package/components/nav/Jump.vue +8 -2
  79. package/components/nav/NamespaceFilter.vue +5 -4
  80. package/components/nav/Pinned.vue +1 -1
  81. package/components/nav/TopLevelMenu.helper.ts +5 -5
  82. package/components/nav/TopLevelMenu.vue +1 -12
  83. package/components/nav/WindowManager/ContainerLogs.vue +96 -58
  84. package/components/nav/WindowManager/ContainerShell.vue +99 -18
  85. package/components/nav/WindowManager/index.vue +74 -6
  86. package/components/nav/__tests__/TopLevelMenu.test.ts +0 -40
  87. package/components/templates/default.vue +2 -47
  88. package/config/features.js +1 -0
  89. package/config/labels-annotations.js +11 -1
  90. package/config/router/navigation-guards/index.js +2 -1
  91. package/config/router/navigation-guards/record-last-route.js +24 -0
  92. package/config/settings.ts +66 -98
  93. package/config/version.js +1 -1
  94. package/core/types-provisioning.ts +7 -0
  95. package/detail/fleet.cattle.io.bundle.vue +7 -0
  96. package/detail/fleet.cattle.io.cluster.vue +0 -3
  97. package/detail/fleet.cattle.io.gitrepo.vue +8 -15
  98. package/detail/provisioning.cattle.io.cluster.vue +8 -2
  99. package/dialog/DeactivateDriverDialog.vue +5 -5
  100. package/dialog/GitRepoForceUpdateDialog.vue +132 -0
  101. package/directives/strip-html-aria-label.js +19 -0
  102. package/edit/__tests__/cis.cattle.io.clusterscan.test.ts +87 -0
  103. package/edit/__tests__/fleet.cattle.io.gitrepo.test.ts +217 -37
  104. package/edit/auth/__tests__/oidc.test.ts +60 -12
  105. package/edit/auth/ldap/__tests__/config.test.ts +40 -0
  106. package/edit/auth/ldap/config.vue +67 -89
  107. package/edit/auth/oidc.vue +16 -2
  108. package/edit/catalog.cattle.io.clusterrepo.vue +12 -8
  109. package/edit/cis.cattle.io.clusterscan.vue +13 -1
  110. package/edit/fleet.cattle.io.gitrepo.vue +198 -72
  111. package/edit/logging-flow/Match.vue +0 -21
  112. package/edit/management.cattle.io.project.vue +1 -1
  113. package/edit/monitoring.coreos.com.prometheusrule/AlertingRule.vue +10 -3
  114. package/edit/monitoring.coreos.com.prometheusrule/RecordingRule.vue +5 -1
  115. package/edit/monitoring.coreos.com.prometheusrule/index.vue +5 -2
  116. package/edit/provisioning.cattle.io.cluster/CustomCommand.vue +8 -1
  117. package/edit/provisioning.cattle.io.cluster/SelectCredential.vue +2 -0
  118. package/edit/provisioning.cattle.io.cluster/__tests__/Advanced.test.ts +0 -2
  119. package/edit/provisioning.cattle.io.cluster/__tests__/CustomCommand.test.ts +55 -15
  120. package/edit/provisioning.cattle.io.cluster/index.vue +28 -30
  121. package/edit/provisioning.cattle.io.cluster/rke2.vue +64 -13
  122. package/edit/provisioning.cattle.io.cluster/tabs/AgentConfiguration.vue +37 -2
  123. package/edit/provisioning.cattle.io.cluster/tabs/etcd/index.vue +3 -2
  124. package/edit/resources.cattle.io.backup.vue +150 -15
  125. package/edit/secret/__tests__/ssh.test.ts +79 -0
  126. package/edit/secret/ssh.vue +7 -1
  127. package/edit/service.vue +0 -3
  128. package/edit/workload/Job.vue +8 -8
  129. package/edit/workload/__tests__/Job.test.ts +0 -1
  130. package/edit/workload/index.vue +3 -1
  131. package/initialize/install-directives.js +2 -0
  132. package/initialize/install-plugins.js +6 -1
  133. package/list/catalog.cattle.io.app.vue +21 -4
  134. package/list/fleet.cattle.io.bundle.vue +1 -1
  135. package/list/management.cattle.io.setting.vue +34 -132
  136. package/list/provisioning.cattle.io.cluster.vue +11 -3
  137. package/machine-config/vmwarevsphere.vue +15 -8
  138. package/mixins/__tests__/auth-config.test.ts +74 -0
  139. package/mixins/__tests__/chart.test.ts +5 -4
  140. package/mixins/__tests__/create-edit-view.test.ts +38 -0
  141. package/mixins/auth-config.js +8 -0
  142. package/mixins/chart.js +2 -2
  143. package/mixins/create-edit-view/impl.js +4 -1
  144. package/mixins/vue-select-overrides.js +10 -0
  145. package/models/__tests__/catalog.cattle.io.app.test.ts +148 -0
  146. package/models/__tests__/fleet.cattle.io.gitrepo.test.ts +157 -0
  147. package/models/__tests__/secret.test.ts +56 -13
  148. package/models/catalog.cattle.io.app.js +112 -37
  149. package/models/cluster.js +11 -0
  150. package/models/fleet.cattle.io.bundle.js +40 -2
  151. package/models/fleet.cattle.io.gitrepo.js +169 -109
  152. package/models/management.cattle.io.fleetworkspace.js +4 -0
  153. package/models/management.cattle.io.kontainerdriver.js +7 -0
  154. package/models/nodedriver.js +4 -1
  155. package/models/provisioning.cattle.io.cluster.js +24 -0
  156. package/models/secret.js +1 -1
  157. package/package.json +5 -5
  158. package/pages/auth/login.vue +5 -11
  159. package/pages/auth/verify.vue +11 -1
  160. package/pages/c/_cluster/apps/charts/index.vue +6 -4
  161. package/pages/c/_cluster/apps/charts/install.vue +1 -1
  162. package/pages/c/_cluster/explorer/ConfigBadge.vue +3 -5
  163. package/pages/c/_cluster/explorer/EventsTable.vue +3 -2
  164. package/pages/c/_cluster/explorer/__tests__/index.test.ts +9 -9
  165. package/pages/c/_cluster/explorer/index.vue +33 -35
  166. package/pages/c/_cluster/explorer/tools/index.vue +3 -3
  167. package/pages/c/_cluster/fleet/index.vue +0 -5
  168. package/pages/c/_cluster/legacy/project/index.vue +1 -1
  169. package/pages/c/_cluster/settings/performance.vue +52 -53
  170. package/pages/c/_cluster/uiplugins/index.vue +19 -22
  171. package/pages/home.vue +17 -12
  172. package/pages/prefs.vue +5 -1
  173. package/plugins/shortkey.js +10 -1
  174. package/plugins/steve/steve-pagination-utils.ts +58 -8
  175. package/promptRemove/management.cattle.io.fleetworkspace.vue +98 -0
  176. package/promptRemove/management.cattle.io.globalrole.vue +1 -1
  177. package/promptRemove/management.cattle.io.project.vue +2 -8
  178. package/promptRemove/management.cattle.io.roletemplate.vue +1 -1
  179. package/promptRemove/mixin/roleDeletionCheck.js +1 -7
  180. package/promptRemove/pod.vue +7 -28
  181. package/rancher-components/Card/Card.vue +9 -1
  182. package/rancher-components/Form/Checkbox/Checkbox.vue +42 -6
  183. package/rancher-components/Form/LabeledInput/LabeledInput.vue +30 -3
  184. package/rancher-components/Form/Radio/RadioButton.vue +18 -3
  185. package/rancher-components/Form/Radio/RadioGroup.vue +39 -5
  186. package/rancher-components/LabeledTooltip/LabeledTooltip.vue +13 -1
  187. package/rancher-components/RcButton/RcButton.test.ts +97 -0
  188. package/rancher-components/RcButton/RcButton.vue +14 -9
  189. package/rancher-components/RcDropdown/RcDropdown.vue +3 -1
  190. package/rancher-components/RcDropdown/RcDropdownItem.vue +8 -2
  191. package/rancher-components/RcDropdown/RcDropdownMenu.vue +66 -0
  192. package/rancher-components/RcDropdown/index.ts +1 -0
  193. package/rancher-components/RcDropdown/types.ts +27 -0
  194. package/rancher-components/RcDropdown/useDropdownContext.ts +5 -2
  195. package/scripts/extension/helm/charts/ui-plugin-server/templates/_helpers.tpl +2 -2
  196. package/scripts/typegen.sh +1 -0
  197. package/store/__tests__/auth.test.ts +120 -0
  198. package/store/action-menu.js +13 -3
  199. package/store/auth.js +14 -9
  200. package/store/aws.js +9 -2
  201. package/store/catalog.js +14 -7
  202. package/store/features.js +1 -0
  203. package/store/prefs.js +9 -28
  204. package/store/type-map.utils.ts +4 -0
  205. package/types/resources/settings.d.ts +27 -20
  206. package/types/shell/index.d.ts +18 -12
  207. package/utils/__tests__/array.test.ts +13 -1
  208. package/utils/__tests__/string.test.ts +80 -1
  209. package/utils/array.ts +13 -0
  210. package/utils/auth.js +4 -0
  211. package/utils/banners.js +0 -45
  212. package/utils/cluster.js +1 -1
  213. package/{edit/monitoring.coreos.com.prometheusrule → utils}/duration.js +5 -3
  214. package/utils/object.js +0 -3
  215. package/utils/pagination-utils.ts +15 -2
  216. package/utils/string.js +31 -7
  217. package/utils/validators/formRules/__tests__/index.test.ts +27 -0
  218. package/utils/validators/formRules/index.ts +16 -0
  219. package/edit/provisioning.cattle.io.cluster/import.vue +0 -198
@@ -279,147 +279,125 @@ export default {
279
279
  color="info"
280
280
  label-key="authConfig.ldap.oktaSchema"
281
281
  />
282
- <div class="row">
283
- <div class="col span-6">
282
+ <div class="schema-container">
283
+ <div class="schema-column">
284
284
  <h4>{{ t('authConfig.ldap.users') }}</h4>
285
- </div>
286
- <div class="col span-6">
287
- <h4>{{ t('authConfig.ldap.groups') }}</h4>
288
- </div>
289
- </div>
290
- <div class="row mb-20">
291
- <div class="col span-6">
292
285
  <LabeledInput
293
286
  v-model:value="model.userObjectClass"
294
287
  :mode="mode"
295
288
  :label="t('authConfig.ldap.objectClass')"
296
289
  />
297
- </div>
298
- <div class="col span-6">
299
- <LabeledInput
300
- v-model:value="model.groupObjectClass"
301
- :mode="mode"
302
- :label="t('authConfig.ldap.objectClass')"
303
- />
304
- </div>
305
- </div>
306
- <div class="row mb-20">
307
- <div class="col span-6">
308
290
  <LabeledInput
309
291
  v-model:value="model.userNameAttribute"
310
292
  :mode="mode"
311
293
  :label="t('authConfig.ldap.usernameAttribute')"
312
294
  />
313
- </div>
314
- <div class="col span-6">
315
- <LabeledInput
316
- v-model:value="model.groupNameAttribute"
317
- :mode="mode"
318
- :label="t('authConfig.ldap.nameAttribute')"
319
- />
320
- </div>
321
- </div>
322
- <div class="row mb-20">
323
- <div class="col span-6">
324
295
  <LabeledInput
325
296
  v-model:value="model.userLoginAttribute"
326
297
  :mode="mode"
327
298
  :label="t('authConfig.ldap.loginAttribute')"
328
299
  />
329
- </div>
330
- <div class="col span-6">
331
- <LabeledInput
332
- v-model:value="model.groupMemberUserAttribute"
333
- :mode="mode"
334
- :label="t('authConfig.ldap.groupMemberUserAttribute')"
335
- />
336
- </div>
337
- </div>
338
- <div class="row mb-20">
339
- <div class="col span-6">
340
300
  <LabeledInput
341
301
  v-model:value="model.userMemberAttribute"
342
302
  :mode="mode"
343
303
  :label="t('authConfig.ldap.userMemberAttribute')"
344
304
  />
345
- </div>
346
- <div class="col span-6">
347
305
  <LabeledInput
348
- v-model:value="model.groupSearchAttribute"
306
+ v-model:value="model.userLoginFilter"
307
+ data-testid="user-login-filter"
349
308
  :mode="mode"
350
- :label="t('authConfig.ldap.searchAttribute')"
309
+ :label="t('authConfig.ldap.userLoginFilter')"
351
310
  />
352
- </div>
353
- </div>
354
- <div class="row mb-20">
355
- <div class="col span-6">
356
311
  <LabeledInput
357
312
  v-model:value="model.userSearchAttribute"
358
313
  :mode="mode"
359
314
  :label="t('authConfig.ldap.searchAttribute')"
360
315
  />
361
- </div>
362
- <div class="col span-6">
363
316
  <LabeledInput
364
- v-model:value="model.groupSearchFilter"
317
+ v-model:value="model.userSearchFilter"
365
318
  :mode="mode"
366
319
  :label="t('authConfig.ldap.searchFilter')"
367
320
  />
368
- </div>
369
- </div>
370
- <div class="row mb-20">
371
- <div class="col span-6">
372
321
  <LabeledInput
373
- v-model:value="model.userSearchFilter"
322
+ v-model:value="model.userEnabledAttribute"
374
323
  :mode="mode"
375
- :label="t('authConfig.ldap.searchFilter')"
324
+ :label="t('authConfig.ldap.userEnabledAttribute')"
376
325
  />
377
- </div>
378
- <div class="col span-6">
379
326
  <LabeledInput
380
- v-model:value="model.groupMemberMappingAttribute"
327
+ v-model:value="model.disabledStatusBitmask"
381
328
  :mode="mode"
382
- :label="t('authConfig.ldap.groupMemberMappingAttribute')"
329
+ :label="t('authConfig.ldap.disabledStatusBitmask')"
383
330
  />
384
331
  </div>
385
- </div>
386
- <div class="row mb-20">
387
- <div class="col span-6">
332
+ <div class="schema-column">
333
+ <h4>{{ t('authConfig.ldap.groups') }}</h4>
388
334
  <LabeledInput
389
- v-model:value="model.userEnabledAttribute"
335
+ v-model:value="model.groupObjectClass"
390
336
  :mode="mode"
391
- :label="t('authConfig.ldap.userEnabledAttribute')"
337
+ :label="t('authConfig.ldap.objectClass')"
392
338
  />
393
- </div>
394
- <div class="col span-6">
395
339
  <LabeledInput
396
- v-model:value="model.groupDNAttribute"
340
+ v-model:value="model.groupNameAttribute"
397
341
  :mode="mode"
398
- :label="t('authConfig.ldap.groupDNAttribute')"
342
+ :label="t('authConfig.ldap.nameAttribute')"
399
343
  />
400
- </div>
401
- </div>
402
- <div class="row mb-20">
403
- <div class="col span-6">
404
344
  <LabeledInput
405
- v-model:value="model.disabledStatusBitmask"
345
+ v-model:value="model.groupMemberUserAttribute"
406
346
  :mode="mode"
407
- :label="t('authConfig.ldap.disabledStatusBitmask')"
347
+ :label="t('authConfig.ldap.groupMemberUserAttribute')"
408
348
  />
409
- </div>
410
- <div
411
- v-if="!isSamlProvider"
412
- class=" col span-6"
413
- >
414
- <RadioGroup
415
- v-model:value="model.nestedGroupMembershipEnabled"
349
+ <LabeledInput
350
+ v-model:value="model.groupSearchAttribute"
416
351
  :mode="mode"
417
- name="nested"
418
- class="full-height"
419
- :options="[true, false]"
420
- :labels="[t('authConfig.ldap.nestedGroupMembership.options.nested'), t('authConfig.ldap.nestedGroupMembership.options.direct')]"
352
+ :label="t('authConfig.ldap.searchAttribute')"
353
+ />
354
+ <LabeledInput
355
+ v-model:value="model.groupSearchFilter"
356
+ :mode="mode"
357
+ :label="t('authConfig.ldap.searchFilter')"
421
358
  />
359
+ <LabeledInput
360
+ v-model:value="model.groupMemberMappingAttribute"
361
+ :mode="mode"
362
+ :label="t('authConfig.ldap.groupMemberMappingAttribute')"
363
+ />
364
+ <LabeledInput
365
+ v-model:value="model.groupDNAttribute"
366
+ :mode="mode"
367
+ :label="t('authConfig.ldap.groupDNAttribute')"
368
+ />
369
+ <template
370
+ v-if="!isSamlProvider"
371
+ >
372
+ <RadioGroup
373
+ v-model:value="model.nestedGroupMembershipEnabled"
374
+ :mode="mode"
375
+ name="nested"
376
+ class="full-height"
377
+ :options="[true, false]"
378
+ :labels="[t('authConfig.ldap.nestedGroupMembership.options.nested'), t('authConfig.ldap.nestedGroupMembership.options.direct')]"
379
+ />
380
+ </template>
422
381
  </div>
423
382
  </div>
424
383
  </div>
425
384
  </template>
385
+
386
+ <style lang="scss" scoped>
387
+ .schema-container {
388
+ display: flex;
389
+ gap: 1.75%;
390
+ flex-wrap: wrap;
391
+ }
392
+
393
+ .schema-column {
394
+ flex: 1;
395
+ display: flex;
396
+ flex-direction: column;
397
+ min-width: 16rem;
398
+
399
+ > :not(:first-child) {
400
+ margin-bottom: 20px;
401
+ }
402
+ }
403
+ </style>
@@ -11,6 +11,7 @@ import AdvancedSection from '@shell/components/AdvancedSection.vue';
11
11
  import ArrayList from '@shell/components/form/ArrayList';
12
12
  import { LabeledInput } from '@components/Form/LabeledInput';
13
13
  import { RadioGroup } from '@components/Form/Radio';
14
+ import { Checkbox } from '@components/Form/Checkbox';
14
15
 
15
16
  export default {
16
17
  components: {
@@ -23,7 +24,8 @@ export default {
23
24
  AdvancedSection,
24
25
  ArrayList,
25
26
  LabeledInput,
26
- RadioGroup
27
+ RadioGroup,
28
+ Checkbox,
27
29
  },
28
30
 
29
31
  mixins: [CreateEditView, AuthConfig],
@@ -134,7 +136,7 @@ export default {
134
136
  const isKeycloak = this.model.id === 'keycloakoidc';
135
137
 
136
138
  const url = this.oidcUrls.url.replaceAll(' ', '');
137
- const realmsPath = isKeycloak ? 'auth/realms' : 'realms';
139
+ const realmsPath = 'realms';
138
140
 
139
141
  this.model.issuer = `${ url }/${ realmsPath }/${ this.oidcUrls.realm || '' }`;
140
142
 
@@ -253,6 +255,18 @@ export default {
253
255
  </div>
254
256
  </div>
255
257
 
258
+ <div class="row mb-20">
259
+ <div class="col span-6">
260
+ <Checkbox
261
+ v-model:value="model.groupSearchEnabled"
262
+ data-testid="input-group-search"
263
+ :label="t('authConfig.oidc.groupSearch.label')"
264
+ :tooltip="t('authConfig.oidc.groupSearch.tooltip')"
265
+ :mode="mode"
266
+ />
267
+ </div>
268
+ </div>
269
+
256
270
  <div class="row mb-20">
257
271
  <div class="col span-6">
258
272
  <ArrayList
@@ -6,7 +6,7 @@ import { RadioGroup } from '@components/Form/Radio';
6
6
  import NameNsDescription from '@shell/components/form/NameNsDescription';
7
7
  import Labels from '@shell/components/form/Labels';
8
8
  import SelectOrCreateAuthSecret from '@shell/components/form/SelectOrCreateAuthSecret';
9
- import InfoBox from '@shell/components/InfoBox';
9
+ import Banner from '@components/Banner/Banner.vue';
10
10
  import { Checkbox } from '@components/Form/Checkbox';
11
11
  import { MANAGEMENT, NAMESPACE, CLUSTER_REPO_TYPES } from '@shell/config/types';
12
12
  import UnitInput from '@shell/components/form/UnitInput.vue';
@@ -23,7 +23,7 @@ export default {
23
23
  NameNsDescription,
24
24
  Labels,
25
25
  SelectOrCreateAuthSecret,
26
- InfoBox,
26
+ Banner,
27
27
  Checkbox,
28
28
  UnitInput
29
29
  },
@@ -153,12 +153,16 @@ export default {
153
153
  </div>
154
154
  </div>
155
155
 
156
- <InfoBox
157
- v-if="clusterRepoType === CLUSTER_REPO_TYPES.OCI_URL"
158
- class="p-10"
159
- >
160
- {{ t('catalog.repo.oci.info', null, true) }}
161
- </InfoBox>
156
+ <template v-if="clusterRepoType === CLUSTER_REPO_TYPES.OCI_URL">
157
+ <Banner
158
+ label-key="catalog.repo.oci.warning"
159
+ color="warning"
160
+ />
161
+ <Banner
162
+ :label="t('catalog.repo.oci.info', null, true)"
163
+ color="info"
164
+ />
165
+ </template>
162
166
 
163
167
  <div class="row mb-10">
164
168
  <template v-if="clusterRepoType === CLUSTER_REPO_TYPES.GIT_REPO">
@@ -192,7 +192,19 @@ export default {
192
192
  if (!schedule) {
193
193
  return false;
194
194
  } else {
195
- return isValidCron(schedule) && !!this.value.spec.scanProfileName;
195
+ // TODO - #13202: This is required due use of 2 libraries and 3 different libraries through the code.
196
+ const predefined = [
197
+ '@yearly',
198
+ '@annually',
199
+ '@monthly',
200
+ '@weekly',
201
+ '@daily',
202
+ '@midnight',
203
+ '@hourly'
204
+ ];
205
+ const isPredefined = predefined.includes(schedule);
206
+
207
+ return (isPredefined || isValidCron(schedule)) && !!this.value.spec.scanProfileName;
196
208
  }
197
209
  }
198
210