dashboard-shell-shell 3.0.2-test.20250913 → 3.0.5-test.10

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 (641) hide show
  1. package/assets/data/aws-regions.json +3 -0
  2. package/assets/icons/demo.css:Zone.Identifier +0 -0
  3. package/assets/icons/demo_index.html:Zone.Identifier +0 -0
  4. package/assets/icons/iconfont.css:Zone.Identifier +0 -0
  5. package/assets/icons/iconfont.js:Zone.Identifier +0 -0
  6. package/assets/icons/iconfont.json:Zone.Identifier +0 -0
  7. package/assets/icons/iconfont.ttf:Zone.Identifier +0 -0
  8. package/assets/icons/iconfont.woff2:Zone.Identifier +0 -0
  9. package/assets/icons/iconfont.woff:Zone.Identifier +0 -0
  10. package/assets/images/icons/document.svg +3 -0
  11. package/assets/images/key.svg +17 -0
  12. package/assets/images/providers/sks.svg +1 -0
  13. package/assets/images/vendor/cognito.svg +1 -0
  14. package/assets/styles/app.scss +3 -0
  15. package/assets/styles/base/_basic.scss +10 -0
  16. package/assets/styles/base/_spacing.scss +29 -0
  17. package/assets/styles/base/_variables.scss +19 -13
  18. package/assets/styles/global/_button.scss +7 -7
  19. package/assets/styles/global/_labeled-input.scss +1 -1
  20. package/assets/styles/global/_layout.scss +1 -1
  21. package/assets/styles/global/_tooltip.scss +4 -4
  22. package/assets/styles/themes/_dark.scss +30 -0
  23. package/assets/styles/themes/_light.scss +83 -3
  24. package/assets/translations/en-us.yaml +822 -105
  25. package/assets/translations/zh-hans.yaml +89 -3
  26. package/chart/__tests__/S3.test.ts +2 -1
  27. package/chart/monitoring/index.vue +1 -1
  28. package/cloud-credential/gcp.vue +9 -1
  29. package/components/ActionDropdown.vue +1 -1
  30. package/components/ActionMenuShell.vue +3 -7
  31. package/components/AppModal.vue +9 -28
  32. package/components/AsyncButton.vue +2 -0
  33. package/components/BrandImage.vue +0 -21
  34. package/components/Certificates.vue +5 -0
  35. package/components/CodeMirror.vue +3 -3
  36. package/components/CommunityLinks.vue +3 -58
  37. package/components/ConfigMapSettings/Settings.vue +377 -0
  38. package/components/ConfigMapSettings/index.vue +354 -0
  39. package/components/CopyToClipboard.vue +15 -0
  40. package/components/CruResource.vue +103 -16
  41. package/components/DetailText.vue +61 -11
  42. package/components/Drawer/Chrome.vue +115 -0
  43. package/components/Drawer/ResourceDetailDrawer/ConfigTab.vue +61 -0
  44. package/components/Drawer/ResourceDetailDrawer/YamlTab.vue +48 -0
  45. package/components/Drawer/ResourceDetailDrawer/__tests__/ConfigTab.test.ts +54 -0
  46. package/components/Drawer/ResourceDetailDrawer/__tests__/YamlTab.test.ts +80 -0
  47. package/components/Drawer/ResourceDetailDrawer/__tests__/composables.test.ts +106 -0
  48. package/components/Drawer/ResourceDetailDrawer/__tests__/helpers.test.ts +42 -0
  49. package/components/Drawer/ResourceDetailDrawer/composables.ts +53 -0
  50. package/components/Drawer/ResourceDetailDrawer/helpers.ts +10 -0
  51. package/components/Drawer/ResourceDetailDrawer/index.vue +124 -0
  52. package/components/ExplorerMembers.vue +18 -3
  53. package/components/ExplorerProjectsNamespaces.vue +46 -29
  54. package/components/FilterPanel.vue +156 -0
  55. package/components/FixedBanner.vue +19 -5
  56. package/components/{fleet/ForceDirectedTreeChart/index.vue → ForceDirectedTreeChart.vue} +47 -41
  57. package/components/GrowlManager.vue +16 -15
  58. package/components/IconOrSvg.vue +19 -35
  59. package/components/KeyValueView.vue +1 -1
  60. package/components/LandingPagePreference.vue +2 -0
  61. package/components/Loading.vue +1 -1
  62. package/components/LocaleSelector.vue +10 -2
  63. package/components/PaginatedResourceTable.vue +53 -1
  64. package/components/PodSecurityAdmission.vue +1 -1
  65. package/components/ProgressBarMulti.vue +1 -0
  66. package/components/PromptModal.vue +38 -7
  67. package/components/PromptRemove.vue +5 -1
  68. package/components/PromptRestore.vue +22 -44
  69. package/components/RelatedResources.vue +4 -12
  70. package/components/Resource/Detail/Additional.vue +46 -0
  71. package/components/Resource/Detail/Card/PodsCard/Bubble.vue +13 -0
  72. package/components/Resource/Detail/Card/PodsCard/composable.ts +30 -0
  73. package/components/Resource/Detail/Card/PodsCard/index.vue +118 -0
  74. package/components/Resource/Detail/Card/ResourceUsageCard/composable.ts +51 -0
  75. package/components/Resource/Detail/Card/ResourceUsageCard/index.vue +79 -0
  76. package/components/Resource/Detail/Card/Scaler.vue +89 -0
  77. package/components/Resource/Detail/Card/StateCard/composables.ts +112 -0
  78. package/components/Resource/Detail/Card/StateCard/index.vue +39 -0
  79. package/components/Resource/Detail/Card/VerticalGap.vue +11 -0
  80. package/components/Resource/Detail/Card/__tests__/Card.test.ts +36 -0
  81. package/components/Resource/Detail/Card/__tests__/PodsCard.test.ts +84 -0
  82. package/components/Resource/Detail/Card/__tests__/ResourceUsageCard.test.ts +72 -0
  83. package/components/Resource/Detail/Card/__tests__/Scaler.test.ts +87 -0
  84. package/components/Resource/Detail/Card/__tests__/StateCard.test.ts +53 -0
  85. package/components/Resource/Detail/Card/__tests__/VerticalGap.test.ts +14 -0
  86. package/components/Resource/Detail/Card/__tests__/index.test.ts +36 -0
  87. package/components/Resource/Detail/Card/index.vue +56 -0
  88. package/components/Resource/Detail/Metadata/Annotations/__tests__/index.test.ts +19 -0
  89. package/components/Resource/Detail/Metadata/Annotations/composable.ts +12 -0
  90. package/components/Resource/Detail/Metadata/Annotations/index.vue +31 -0
  91. package/components/Resource/Detail/Metadata/IdentifyingInformation/__tests__/identifying-fields.test.ts +223 -0
  92. package/components/Resource/Detail/Metadata/IdentifyingInformation/__tests__/index.test.ts +103 -0
  93. package/components/Resource/Detail/Metadata/IdentifyingInformation/composable.ts +72 -0
  94. package/components/Resource/Detail/Metadata/IdentifyingInformation/identifying-fields.ts +317 -0
  95. package/components/Resource/Detail/Metadata/IdentifyingInformation/index.vue +138 -0
  96. package/components/Resource/Detail/Metadata/KeyValue.vue +144 -0
  97. package/components/Resource/Detail/Metadata/Labels/__tests__/index.test.ts +18 -0
  98. package/components/Resource/Detail/Metadata/Labels/composable.ts +12 -0
  99. package/components/Resource/Detail/Metadata/Labels/index.vue +31 -0
  100. package/components/Resource/Detail/Metadata/Rectangle.vue +34 -0
  101. package/components/Resource/Detail/Metadata/__tests__/KeyValue.test.ts +107 -0
  102. package/components/Resource/Detail/Metadata/__tests__/Rectangle.test.ts +24 -0
  103. package/components/Resource/Detail/Metadata/__tests__/composables.test.ts +75 -0
  104. package/components/Resource/Detail/Metadata/__tests__/index.test.ts +91 -0
  105. package/components/Resource/Detail/Metadata/composables.ts +81 -0
  106. package/components/Resource/Detail/Metadata/index.vue +90 -0
  107. package/components/Resource/Detail/Page.vue +37 -0
  108. package/components/Resource/Detail/PercentageBar.vue +40 -0
  109. package/components/Resource/Detail/ResourceRow.vue +138 -0
  110. package/components/Resource/Detail/ResourceTabs/ConfigMapDataTab/__tests__/composables.test.ts +29 -0
  111. package/components/Resource/Detail/ResourceTabs/ConfigMapDataTab/__tests__/index.test.ts +48 -0
  112. package/components/Resource/Detail/ResourceTabs/ConfigMapDataTab/composables.ts +31 -0
  113. package/components/Resource/Detail/ResourceTabs/ConfigMapDataTab/index.vue +50 -0
  114. package/components/Resource/Detail/ResourceTabs/KnownHostsTab/__tests__/composables.test.ts +66 -0
  115. package/components/Resource/Detail/ResourceTabs/KnownHostsTab/composables.ts +21 -0
  116. package/components/Resource/Detail/ResourceTabs/KnownHostsTab/index.vue +31 -0
  117. package/components/Resource/Detail/ResourceTabs/SecretDataTab/Basic.vue +45 -0
  118. package/components/Resource/Detail/ResourceTabs/SecretDataTab/BasicAuth.vue +31 -0
  119. package/components/Resource/Detail/ResourceTabs/SecretDataTab/Certificate.vue +31 -0
  120. package/components/Resource/Detail/ResourceTabs/SecretDataTab/Registry.vue +22 -0
  121. package/components/Resource/Detail/ResourceTabs/SecretDataTab/ServiceAccountToken.vue +31 -0
  122. package/components/Resource/Detail/ResourceTabs/SecretDataTab/Ssh.vue +32 -0
  123. package/components/Resource/Detail/ResourceTabs/SecretDataTab/__tests__/Basic.test.ts +40 -0
  124. package/components/Resource/Detail/ResourceTabs/SecretDataTab/__tests__/BasicAuth.test.ts +33 -0
  125. package/components/Resource/Detail/ResourceTabs/SecretDataTab/__tests__/Certificate.test.ts +33 -0
  126. package/components/Resource/Detail/ResourceTabs/SecretDataTab/__tests__/Registry.test.ts +27 -0
  127. package/components/Resource/Detail/ResourceTabs/SecretDataTab/__tests__/ServiceAccountToken.test.ts +33 -0
  128. package/components/Resource/Detail/ResourceTabs/SecretDataTab/__tests__/Ssh.test.ts +33 -0
  129. package/components/Resource/Detail/ResourceTabs/SecretDataTab/__tests__/auth-types.test.ts +186 -0
  130. package/components/Resource/Detail/ResourceTabs/SecretDataTab/__tests__/composables.test.ts +102 -0
  131. package/components/Resource/Detail/ResourceTabs/SecretDataTab/auth-types.ts +109 -0
  132. package/components/Resource/Detail/ResourceTabs/SecretDataTab/composeables.ts +52 -0
  133. package/components/Resource/Detail/ResourceTabs/SecretDataTab/index.vue +71 -0
  134. package/components/Resource/Detail/SpacedRow.vue +14 -0
  135. package/components/Resource/Detail/StatusBar.vue +59 -0
  136. package/components/Resource/Detail/StatusRow.vue +61 -0
  137. package/components/Resource/Detail/TitleBar/Title.vue +15 -0
  138. package/components/Resource/Detail/TitleBar/Top.vue +16 -0
  139. package/components/Resource/Detail/TitleBar/__tests__/Title.test.ts +17 -0
  140. package/components/Resource/Detail/TitleBar/__tests__/Top.test.ts +17 -0
  141. package/components/Resource/Detail/TitleBar/__tests__/composables.test.ts +63 -0
  142. package/components/Resource/Detail/TitleBar/__tests__/index.test.ts +142 -0
  143. package/components/Resource/Detail/TitleBar/composables.ts +46 -0
  144. package/components/Resource/Detail/TitleBar/index.vue +289 -0
  145. package/components/Resource/Detail/Top/index.vue +34 -0
  146. package/components/Resource/Detail/__tests__/Page.test.ts +32 -0
  147. package/components/Resource/Detail/composables.ts +45 -0
  148. package/components/ResourceDetail/Masthead/__tests__/index.test.ts +70 -0
  149. package/components/ResourceDetail/{__tests__/Masthead.test.ts → Masthead/__tests__/legacy.test.ts} +3 -3
  150. package/components/ResourceDetail/Masthead/index.vue +65 -0
  151. package/components/ResourceDetail/Masthead/latest.vue +44 -0
  152. package/components/ResourceDetail/{Masthead.vue → Masthead/legacy.vue} +235 -165
  153. package/components/ResourceDetail/__tests__/index.test.ts +135 -0
  154. package/components/ResourceDetail/index.vue +75 -575
  155. package/components/ResourceDetail/legacy.vue +580 -0
  156. package/components/ResourceList/Masthead.vue +70 -21
  157. package/components/ResourceList/index.vue +3 -2
  158. package/components/ResourceTable.vue +59 -85
  159. package/components/ResourceYaml.vue +15 -2
  160. package/components/RichTranslation.vue +106 -0
  161. package/components/SlideInPanelManager.vue +116 -14
  162. package/components/SortableTable/index.vue +12 -4
  163. package/components/SortableTable/paging.js +15 -16
  164. package/components/SortableTable/selection.js +22 -10
  165. package/components/StateDot/index.vue +28 -0
  166. package/components/StatusBadge.vue +6 -4
  167. package/components/SubtleLink.vue +25 -0
  168. package/components/Tabbed/index.vue +38 -22
  169. package/components/Wizard.vue +16 -3
  170. package/components/YamlEditor.vue +1 -2
  171. package/components/__tests__/AsyncButton.test.ts +39 -0
  172. package/components/__tests__/ConfigMapSettings.test.ts +376 -0
  173. package/components/__tests__/CruResource.test.ts +63 -0
  174. package/components/__tests__/FilterPanel.test.ts +81 -0
  175. package/components/__tests__/GrowlManager.test.ts +0 -25
  176. package/components/__tests__/PromptModal.test.ts +146 -0
  177. package/components/__tests__/PromptRestore.test.ts +1 -65
  178. package/components/__tests__/RichTranslation.test.ts +115 -0
  179. package/components/auth/AuthBanner.vue +15 -14
  180. package/components/auth/Principal.vue +35 -12
  181. package/components/auth/RoleDetailEdit.vue +44 -4
  182. package/components/auth/login/ldap.vue +2 -2
  183. package/components/auth/login/oidc.vue +6 -1
  184. package/components/breadcrumb/index.vue +316 -0
  185. package/components/fleet/FleetApplications.vue +174 -0
  186. package/components/fleet/FleetClusterTargets/TargetsList.vue +66 -0
  187. package/components/fleet/FleetClusterTargets/index.vue +455 -0
  188. package/components/fleet/FleetClusters.vue +25 -6
  189. package/components/fleet/FleetGitRepoPaths.vue +476 -0
  190. package/components/fleet/FleetHelmOps.vue +123 -0
  191. package/components/fleet/FleetIntro.vue +58 -28
  192. package/components/fleet/FleetNoWorkspaces.vue +5 -1
  193. package/components/fleet/FleetOCIStorageSecret.vue +171 -0
  194. package/components/fleet/FleetRepos.vue +37 -80
  195. package/components/fleet/FleetResources.vue +69 -27
  196. package/components/fleet/FleetSummary.vue +26 -51
  197. package/components/fleet/FleetValuesFrom.vue +295 -0
  198. package/components/fleet/__tests__/FleetClusterTargets.test.ts +1224 -0
  199. package/components/fleet/__tests__/FleetGitRepoPaths.test.ts +265 -0
  200. package/components/fleet/__tests__/FleetOCIStorageSecret.test.ts +213 -0
  201. package/components/fleet/__tests__/FleetSummary.test.ts +39 -39
  202. package/components/fleet/__tests__/FleetValuesFrom.test.ts +300 -0
  203. package/components/fleet/dashboard/Empty.vue +73 -0
  204. package/components/fleet/dashboard/ResourceCard.vue +184 -0
  205. package/components/fleet/dashboard/ResourceCardSummary.vue +195 -0
  206. package/components/fleet/dashboard/ResourceDetails.vue +194 -0
  207. package/components/fleet/dashboard/ResourcePanel.vue +384 -0
  208. package/components/form/ArrayList.vue +144 -116
  209. package/components/form/BannerSettings.vue +117 -50
  210. package/components/form/ChangePassword.vue +3 -1
  211. package/components/form/ColorInput.vue +35 -6
  212. package/components/form/FileImageSelector.vue +1 -1
  213. package/components/form/Footer.vue +10 -4
  214. package/components/form/KeyValue.vue +92 -51
  215. package/components/form/LabeledSelect.vue +74 -55
  216. package/components/form/Labels.vue +91 -21
  217. package/components/form/MatchExpressions.vue +56 -9
  218. package/components/form/NameNsDescription.vue +12 -8
  219. package/components/form/Networking.vue +24 -19
  220. package/components/form/NotificationSettings.vue +15 -1
  221. package/components/form/ResourceLabeledSelect.vue +22 -8
  222. package/components/form/ResourceSelector.vue +27 -23
  223. package/components/form/ResourceTabs/index.vue +7 -1
  224. package/components/form/SSHKnownHosts/index.vue +14 -11
  225. package/components/form/SecretSelector.vue +18 -2
  226. package/components/form/Select.vue +57 -26
  227. package/components/form/SelectOrCreateAuthSecret.vue +6 -3
  228. package/components/form/SimpleSecretSelector.vue +17 -4
  229. package/components/form/Taints.vue +23 -3
  230. package/components/form/UnitInput.vue +21 -0
  231. package/components/form/ValueFromResource.vue +31 -19
  232. package/components/form/WorkloadPorts.vue +143 -123
  233. package/components/form/__tests__/ArrayList.test.ts +32 -0
  234. package/components/form/__tests__/ColorInput.test.ts +35 -0
  235. package/components/form/__tests__/KeyValue.test.ts +36 -0
  236. package/components/form/__tests__/LabeledSelect.test.ts +79 -2
  237. package/components/form/__tests__/Labels.test.ts +360 -0
  238. package/components/form/__tests__/MatchExpressions.test.ts +16 -13
  239. package/components/form/__tests__/Networking.test.ts +116 -0
  240. package/components/form/__tests__/SSHKnownHosts.test.ts +11 -2
  241. package/components/form/__tests__/Select.test.ts +37 -1
  242. package/components/form/__tests__/UnitInput.test.ts +23 -1
  243. package/components/form/labeled-select-utils/labeled-select-pagination.ts +3 -38
  244. package/components/formatter/ClusterLink.vue +5 -8
  245. package/components/formatter/Description.vue +30 -0
  246. package/components/formatter/FleetApplicationClustersReady.vue +77 -0
  247. package/components/formatter/FleetApplicationSource.vue +79 -0
  248. package/components/formatter/FleetSummaryGraph.vue +7 -0
  249. package/components/formatter/PodImages.vue +1 -1
  250. package/components/formatter/WorkloadHealthScale.vue +1 -1
  251. package/components/formatter/__tests__/ClusterLink.test.ts +2 -32
  252. package/components/formatter/__tests__/LiveDate.test.ts +10 -2
  253. package/components/google/AccountAccess.vue +209 -0
  254. package/components/google/types/gcp.d.ts +136 -0
  255. package/components/google/types/index.d.ts +101 -0
  256. package/components/google/util/__mocks__/gcp.ts +465 -0
  257. package/components/google/util/formatter.ts +82 -0
  258. package/components/google/util/gcp.ts +134 -0
  259. package/components/google/util/index.d.ts +11 -0
  260. package/components/nav/Favorite.vue +1 -1
  261. package/components/nav/Group.vue +5 -0
  262. package/components/nav/Header.vue +27 -42
  263. package/components/nav/NamespaceFilter.vue +139 -83
  264. package/components/nav/NotificationCenter/Notification.vue +484 -0
  265. package/components/nav/NotificationCenter/NotificationHeader.vue +112 -0
  266. package/components/nav/NotificationCenter/index.vue +148 -0
  267. package/components/nav/TopLevelMenu.helper.ts +55 -34
  268. package/components/nav/TopLevelMenu.vue +11 -0
  269. package/components/nav/Type.vue +4 -1
  270. package/components/nav/WindowManager/ContainerLogs.vue +87 -61
  271. package/components/nav/WindowManager/ContainerLogsActions.vue +76 -0
  272. package/components/nav/WindowManager/index.vue +3 -2
  273. package/components/templates/default.vue +0 -3
  274. package/components/templates/plain.vue +0 -3
  275. package/composables/drawer.ts +26 -0
  276. package/composables/focusTrap.ts +3 -3
  277. package/composables/resources.test.ts +63 -0
  278. package/composables/resources.ts +38 -0
  279. package/composables/useI18n.ts +12 -11
  280. package/composables/useIsNewDetailPageEnabled.ts +17 -0
  281. package/config/labels-annotations.js +22 -11
  282. package/config/pagination-table-headers.js +8 -1
  283. package/config/private-label.js +0 -1
  284. package/config/product/auth.js +20 -3
  285. package/config/product/{cis.js → compliance.js} +23 -26
  286. package/config/product/explorer.js +49 -17
  287. package/config/product/fleet.js +77 -17
  288. package/config/product/manager.js +1 -29
  289. package/config/product/settings.js +23 -11
  290. package/config/query-params.js +16 -1
  291. package/config/roles.ts +2 -1
  292. package/config/router/navigation-guards/authentication.js +51 -2
  293. package/config/router/navigation-guards/index.js +5 -67
  294. package/config/router/routes.js +65 -31
  295. package/config/secret.ts +15 -0
  296. package/config/settings.ts +33 -16
  297. package/config/store.js +2 -0
  298. package/config/system-namespaces.js +1 -1
  299. package/config/table-headers.js +91 -30
  300. package/config/types.js +18 -7
  301. package/config/version.js +1 -1
  302. package/core/plugin-helpers.ts +3 -2
  303. package/core/plugin.ts +32 -7
  304. package/core/types.ts +25 -7
  305. package/detail/catalog.cattle.io.app.vue +5 -1
  306. package/detail/{cis.cattle.io.clusterscan.vue → compliance.cattle.io.clusterscan.vue} +22 -18
  307. package/detail/fleet.cattle.io.bundle.vue +70 -6
  308. package/detail/fleet.cattle.io.cluster.vue +28 -15
  309. package/detail/fleet.cattle.io.gitrepo.vue +11 -2
  310. package/detail/fleet.cattle.io.helmop.vue +157 -0
  311. package/detail/management.cattle.io.fleetworkspace.vue +18 -27
  312. package/detail/management.cattle.io.oidcclient.vue +369 -0
  313. package/detail/namespace.vue +0 -3
  314. package/detail/node.vue +20 -16
  315. package/detail/pod.vue +2 -2
  316. package/detail/provisioning.cattle.io.cluster.vue +16 -50
  317. package/detail/service.vue +10 -2
  318. package/detail/workload/index.vue +48 -39
  319. package/dialog/AddCustomBadgeDialog.vue +0 -1
  320. package/{pages/c/_cluster/uiplugins/AddExtensionRepos.vue → dialog/AddExtensionReposDialog.vue} +72 -42
  321. package/dialog/AddonConfigConfirmationDialog.vue +1 -1
  322. package/dialog/AssignToDialog.vue +176 -0
  323. package/dialog/ChangePasswordDialog.vue +106 -0
  324. package/{pages/c/_cluster/uiplugins/DeveloperInstallDialog.vue → dialog/DeveloperLoadExtensionDialog.vue} +74 -71
  325. package/dialog/DisableAuthProviderDialog.vue +101 -0
  326. package/dialog/DrainNode.vue +1 -1
  327. package/{pages/c/_cluster/uiplugins/CatalogList/CatalogLoadDialog.vue → dialog/ExtensionCatalogInstallDialog.vue} +100 -88
  328. package/{pages/c/_cluster/uiplugins/CatalogList/CatalogUninstallDialog.vue → dialog/ExtensionCatalogUninstallDialog.vue} +87 -66
  329. package/dialog/FeatureFlagListDialog.vue +288 -0
  330. package/dialog/ForceMachineRemoveDialog.vue +1 -1
  331. package/dialog/GenericPrompt.vue +1 -1
  332. package/dialog/HelmOpForceUpdateDialog.vue +132 -0
  333. package/{components/Import.vue → dialog/ImportDialog.vue} +8 -13
  334. package/{pages/c/_cluster/uiplugins/InstallDialog.vue → dialog/InstallExtensionDialog.vue} +124 -106
  335. package/{components/form/SSHKnownHosts → dialog}/KnownHostsEditDialog.vue +52 -62
  336. package/dialog/MoveNamespaceDialog.vue +157 -0
  337. package/dialog/OidcClientSecretDialog.vue +117 -0
  338. package/dialog/RedeployWorkloadDialog.vue +164 -0
  339. package/dialog/RotateEncryptionKeyDialog.vue +10 -30
  340. package/dialog/ScalePoolDownDialog.vue +1 -1
  341. package/{components/nav/Jump.vue → dialog/SearchDialog.vue} +34 -14
  342. package/{pages/c/_cluster/uiplugins/UninstallDialog.vue → dialog/UninstallExtensionDialog.vue} +67 -58
  343. package/dialog/WechatDialog.vue +57 -0
  344. package/{components/form/SSHKnownHosts → dialog}/__tests__/KnownHostsEditDialog.test.ts +15 -34
  345. package/edit/__tests__/cis.cattle.io.clusterscan.test.ts +3 -3
  346. package/edit/__tests__/fleet.cattle.io.gitrepo.test.ts +60 -68
  347. package/edit/__tests__/fleet.cattle.io.helmop.test.ts +224 -0
  348. package/edit/__tests__/service.test.ts +2 -1
  349. package/edit/auth/ldap/__tests__/config.test.ts +14 -0
  350. package/edit/auth/ldap/config.vue +24 -0
  351. package/edit/auth/oidc.vue +159 -93
  352. package/edit/autoscaling.horizontalpodautoscaler/index.vue +4 -1
  353. package/edit/{cis.cattle.io.clusterscan.vue → compliance.cattle.io.clusterscan.vue} +30 -31
  354. package/edit/{cis.cattle.io.clusterscanbenchmark.vue → compliance.cattle.io.clusterscanbenchmark.vue} +4 -4
  355. package/edit/{cis.cattle.io.clusterscanprofile.vue → compliance.cattle.io.clusterscanprofile.vue} +5 -5
  356. package/edit/configmap.vue +8 -2
  357. package/edit/constraints.gatekeeper.sh.constraint/index.vue +1 -0
  358. package/edit/fleet.cattle.io.gitrepo.vue +70 -256
  359. package/edit/fleet.cattle.io.helmop.vue +786 -0
  360. package/edit/helm.cattle.io.projecthelmchart.vue +1 -0
  361. package/edit/k8s.cni.cncf.io.networkattachmentdefinition.vue +1 -0
  362. package/edit/logging-flow/index.vue +1 -0
  363. package/edit/logging.banzaicloud.io.output/index.vue +2 -1
  364. package/edit/logging.banzaicloud.io.output/providers/awsElasticsearch.vue +5 -6
  365. package/edit/management.cattle.io.fleetworkspace.vue +44 -10
  366. package/edit/management.cattle.io.oidcclient.vue +162 -0
  367. package/edit/management.cattle.io.project.vue +4 -1
  368. package/edit/monitoring.coreos.com.alertmanagerconfig/index.vue +1 -1
  369. package/edit/monitoring.coreos.com.alertmanagerconfig/receiverConfig.vue +5 -0
  370. package/edit/monitoring.coreos.com.prometheusrule/index.vue +1 -0
  371. package/edit/monitoring.coreos.com.receiver/auth.vue +3 -3
  372. package/edit/monitoring.coreos.com.receiver/index.vue +1 -0
  373. package/edit/monitoring.coreos.com.receiver/types/email.vue +1 -1
  374. package/edit/monitoring.coreos.com.route.vue +1 -0
  375. package/edit/namespace.vue +2 -4
  376. package/edit/networking.istio.io.destinationrule/index.vue +4 -1
  377. package/edit/networking.k8s.io.ingress/Certificate.vue +11 -3
  378. package/edit/networking.k8s.io.ingress/__tests__/Certificate.test.ts +37 -0
  379. package/edit/networking.k8s.io.ingress/index.vue +4 -1
  380. package/edit/networking.k8s.io.networkpolicy/PolicyRule.vue +3 -14
  381. package/edit/networking.k8s.io.networkpolicy/PolicyRuleTarget.vue +57 -62
  382. package/edit/networking.k8s.io.networkpolicy/PolicyRules.vue +10 -16
  383. package/edit/networking.k8s.io.networkpolicy/__tests__/PolicyRuleTarget.test.ts +72 -41
  384. package/edit/networking.k8s.io.networkpolicy/__tests__/utils/mock.json +17 -1
  385. package/edit/networking.k8s.io.networkpolicy/index.vue +23 -31
  386. package/edit/node.vue +1 -0
  387. package/edit/persistentvolume/index.vue +4 -1
  388. package/edit/provisioning.cattle.io.cluster/__tests__/DirectoryConfig.test.ts +26 -12
  389. package/edit/provisioning.cattle.io.cluster/__tests__/rke2.test.ts +69 -2
  390. package/edit/provisioning.cattle.io.cluster/__tests__/utils/rke2-test-data.ts +58 -0
  391. package/edit/provisioning.cattle.io.cluster/index.vue +21 -73
  392. package/edit/provisioning.cattle.io.cluster/rke2.vue +535 -428
  393. package/edit/provisioning.cattle.io.cluster/tabs/Basics.vue +48 -39
  394. package/edit/provisioning.cattle.io.cluster/tabs/DirectoryConfig.vue +5 -3
  395. package/edit/provisioning.cattle.io.cluster/tabs/MachinePool.vue +5 -0
  396. package/edit/provisioning.cattle.io.cluster/tabs/registries/RegistryConfigs.vue +2 -2
  397. package/edit/resources.cattle.io.restore.vue +1 -1
  398. package/edit/secret/basic.vue +1 -0
  399. package/edit/secret/index.vue +127 -15
  400. package/edit/service.vue +17 -29
  401. package/edit/serviceaccount.vue +4 -1
  402. package/edit/storage.k8s.io.storageclass/index.vue +4 -1
  403. package/edit/workload/index.vue +14 -18
  404. package/edit/workload/mixins/workload.js +0 -2
  405. package/list/{cis.cattle.io.clusterscan.vue → compliance.cattle.io.clusterscan.vue} +2 -2
  406. package/list/fleet.cattle.io.gitrepo.vue +1 -1
  407. package/list/fleet.cattle.io.helmop.vue +108 -0
  408. package/list/harvesterhci.io.management.cluster.vue +0 -17
  409. package/list/management.cattle.io.feature.vue +4 -288
  410. package/list/management.cattle.io.oidcclient.vue +108 -0
  411. package/list/management.cattle.io.user.vue +13 -20
  412. package/list/namespace.vue +6 -2
  413. package/list/node.vue +2 -0
  414. package/list/projectsecret.vue +345 -0
  415. package/list/secret.vue +109 -0
  416. package/list/workload.vue +6 -2
  417. package/machine-config/__tests__/vmwarevsphere.test.ts +5 -7
  418. package/machine-config/amazonec2.vue +3 -24
  419. package/machine-config/components/GCEImage.vue +374 -0
  420. package/machine-config/google.vue +617 -0
  421. package/machine-config/vmwarevsphere.vue +7 -17
  422. package/mixins/__tests__/brand.spec.ts +170 -0
  423. package/mixins/auth-config.js +8 -1
  424. package/mixins/brand.js +16 -17
  425. package/mixins/create-edit-view/impl.js +10 -1
  426. package/mixins/create-edit-view/index.js +5 -0
  427. package/mixins/preset.js +100 -0
  428. package/mixins/resource-fetch-api-pagination.js +73 -44
  429. package/mixins/resource-fetch.js +18 -8
  430. package/mixins/resource-table-watch.js +45 -0
  431. package/mixins/vue-select-overrides.js +1 -4
  432. package/models/__tests__/chart.test.ts +296 -0
  433. package/models/__tests__/fleet.cattle.io.gitrepo.test.ts +1 -1
  434. package/models/__tests__/fleet.cattle.io.helmop.test.ts +224 -0
  435. package/models/__tests__/node.test.ts +7 -63
  436. package/models/__tests__/workload.test.ts +1 -0
  437. package/models/chart.js +157 -2
  438. package/models/cluster/node.js +2 -1
  439. package/models/cluster.js +32 -2
  440. package/models/cluster.x-k8s.io.machinedeployment.js +11 -2
  441. package/models/{cis.cattle.io.clusterscan.js → compliance.cattle.io.clusterscan.js} +8 -8
  442. package/models/{cis.cattle.io.clusterscanbenchmark.js → compliance.cattle.io.clusterscanbenchmark.js} +1 -1
  443. package/models/{cis.cattle.io.clusterscanprofile.js → compliance.cattle.io.clusterscanprofile.js} +5 -5
  444. package/models/{cis.cattle.io.clusterscanreport.js → compliance.cattle.io.clusterscanreport.js} +1 -1
  445. package/models/fleet-application.js +297 -0
  446. package/models/fleet.cattle.io.bundle.js +9 -8
  447. package/models/fleet.cattle.io.cluster.js +21 -4
  448. package/models/fleet.cattle.io.gitrepo.js +46 -382
  449. package/models/fleet.cattle.io.helmop.js +202 -0
  450. package/models/management.cattle.io.authconfig.js +1 -0
  451. package/models/management.cattle.io.cluster.js +0 -20
  452. package/models/management.cattle.io.feature.js +7 -1
  453. package/models/management.cattle.io.fleetworkspace.js +14 -1
  454. package/models/management.cattle.io.node.js +7 -22
  455. package/models/management.cattle.io.nodepool.js +12 -0
  456. package/models/management.cattle.io.oidcclient.js +18 -0
  457. package/models/management.cattle.io.registration.js +3 -0
  458. package/models/management.cattle.io.setting.js +0 -1
  459. package/models/namespace.js +12 -1
  460. package/models/provisioning.cattle.io.cluster.js +60 -97
  461. package/models/secret.js +157 -2
  462. package/models/service.js +28 -9
  463. package/models/storage.k8s.io.storageclass.js +2 -2
  464. package/models/workload.js +91 -51
  465. package/package.json +6 -5
  466. package/pages/about.vue +17 -61
  467. package/pages/account/index.vue +34 -80
  468. package/pages/auth/login.vue +2 -3
  469. package/pages/auth/verify.vue +13 -1
  470. package/pages/c/_cluster/apps/charts/AddRepoLink.vue +36 -0
  471. package/pages/c/_cluster/apps/charts/AppChartCardFooter.vue +80 -0
  472. package/pages/c/_cluster/apps/charts/AppChartCardSubHeader.vue +57 -0
  473. package/pages/c/_cluster/apps/charts/StatusLabel.vue +33 -0
  474. package/pages/c/_cluster/apps/charts/index.vue +501 -468
  475. package/pages/c/_cluster/apps/charts/install.vue +0 -1
  476. package/pages/c/_cluster/auth/roles/index.vue +45 -41
  477. package/pages/c/_cluster/auth/user.retention/index.vue +87 -78
  478. package/pages/c/_cluster/explorer/EventsTable.vue +1 -1
  479. package/pages/c/_cluster/explorer/index.vue +14 -3
  480. package/pages/c/_cluster/explorer/projectsecret.vue +34 -0
  481. package/pages/c/_cluster/explorer/tools/pages/_page.vue +0 -1
  482. package/pages/c/_cluster/fleet/__tests__/index.test.ts +720 -0
  483. package/pages/c/_cluster/fleet/application/_resource/_id.vue +14 -0
  484. package/pages/c/_cluster/fleet/application/_resource/create.vue +14 -0
  485. package/pages/c/_cluster/fleet/application/create.vue +341 -0
  486. package/pages/c/_cluster/fleet/application/index.vue +139 -0
  487. package/pages/c/_cluster/fleet/graph/config.js +277 -0
  488. package/pages/c/_cluster/fleet/index.vue +866 -328
  489. package/pages/c/_cluster/fleet/settings/index.vue +229 -0
  490. package/pages/c/_cluster/longhorn/index.vue +5 -2
  491. package/pages/c/_cluster/settings/banners.vue +56 -2
  492. package/pages/c/_cluster/settings/brand.vue +2 -1
  493. package/pages/c/_cluster/settings/performance.vue +7 -26
  494. package/pages/c/_cluster/uiplugins/CatalogList/index.vue +16 -1
  495. package/pages/c/_cluster/uiplugins/PluginInfoPanel.vue +2 -2
  496. package/pages/c/_cluster/uiplugins/__tests__/AddExtensionRepos.test.ts +4 -7
  497. package/pages/c/_cluster/uiplugins/index.vue +98 -55
  498. package/pages/explorer/resource/detail/configmap.vue +42 -0
  499. package/pages/explorer/resource/detail/projectsecret.vue +9 -0
  500. package/pages/explorer/resource/detail/secret.vue +63 -0
  501. package/pages/home.vue +8 -104
  502. package/pages/prefs.vue +0 -1
  503. package/pages/support/index.vue +4 -6
  504. package/pkg/tsconfig.json +9 -9
  505. package/pkg/vue.config.js +2 -2
  506. package/plugins/clean-html.js +2 -0
  507. package/plugins/dashboard-store/__tests__/actions.test.ts +4 -1
  508. package/plugins/dashboard-store/__tests__/normalize.test.ts +223 -0
  509. package/plugins/dashboard-store/__tests__/resource-class.test.ts +191 -0
  510. package/plugins/dashboard-store/__tests__/utils/normalize-usecases.ts +1526 -0
  511. package/plugins/dashboard-store/actions.js +212 -55
  512. package/plugins/dashboard-store/getters.js +112 -24
  513. package/plugins/dashboard-store/mutations.js +61 -12
  514. package/plugins/dashboard-store/normalize.js +29 -19
  515. package/plugins/dashboard-store/resource-class.js +105 -21
  516. package/plugins/steve/__tests__/getters.test.ts +19 -12
  517. package/plugins/steve/__tests__/steve-class.test.ts +1 -0
  518. package/plugins/steve/__tests__/subscribe.spec.ts +324 -1
  519. package/plugins/steve/actions.js +37 -24
  520. package/plugins/steve/getters.js +47 -12
  521. package/plugins/steve/resourceWatcher.js +10 -3
  522. package/plugins/steve/steve-class.js +5 -0
  523. package/plugins/steve/steve-pagination-utils.ts +225 -43
  524. package/plugins/steve/subscribe.js +418 -53
  525. package/plugins/steve/worker/web-worker.advanced.js +5 -1
  526. package/rancher-components/BadgeState/BadgeState.vue +33 -52
  527. package/rancher-components/Banner/Banner.test.ts +51 -3
  528. package/rancher-components/Banner/Banner.vue +39 -8
  529. package/rancher-components/Form/Checkbox/Checkbox.test.ts +59 -1
  530. package/rancher-components/Form/Checkbox/Checkbox.vue +27 -9
  531. package/rancher-components/Form/LabeledInput/LabeledInput.test.ts +51 -0
  532. package/rancher-components/Form/LabeledInput/LabeledInput.vue +21 -3
  533. package/rancher-components/Form/Radio/RadioButton.test.ts +36 -1
  534. package/rancher-components/Form/Radio/RadioButton.vue +21 -5
  535. package/rancher-components/Form/Radio/RadioGroup.test.ts +60 -0
  536. package/rancher-components/Form/Radio/RadioGroup.vue +81 -38
  537. package/rancher-components/Form/TextArea/TextAreaAutoGrow.vue +4 -0
  538. package/rancher-components/Form/ToggleSwitch/ToggleSwitch.vue +22 -1
  539. package/rancher-components/LabeledTooltip/LabeledTooltip.vue +1 -0
  540. package/rancher-components/RcButton/RcButton.vue +1 -1
  541. package/rancher-components/RcDropdown/RcDropdown.test.ts +98 -0
  542. package/rancher-components/RcDropdown/RcDropdown.vue +6 -0
  543. package/rancher-components/RcDropdown/RcDropdownItem.vue +8 -55
  544. package/rancher-components/RcDropdown/RcDropdownItemCheckbox.vue +69 -0
  545. package/rancher-components/RcDropdown/RcDropdownItemSelect.vue +93 -0
  546. package/rancher-components/RcDropdown/index.ts +2 -0
  547. package/rancher-components/RcDropdown/useDropdownContext.ts +21 -0
  548. package/rancher-components/RcDropdown/useDropdownItem.ts +92 -0
  549. package/rancher-components/RcItemCard/RcItemCard.test.ts +189 -0
  550. package/rancher-components/RcItemCard/RcItemCard.vue +430 -0
  551. package/rancher-components/RcItemCard/RcItemCardAction.vue +24 -0
  552. package/rancher-components/RcItemCard/index.ts +2 -0
  553. package/rancher-components/StringList/StringList.vue +1 -1
  554. package/scripts/extension/publish +1 -1
  555. package/scripts/publish-shell.sh +1 -1
  556. package/static/loading-indicator.html +1 -1
  557. package/store/action-menu.js +26 -56
  558. package/store/auth.js +3 -0
  559. package/store/catalog.js +85 -25
  560. package/store/features.js +0 -1
  561. package/store/growl.js +97 -8
  562. package/store/i18n.js +4 -1
  563. package/store/index.js +44 -14
  564. package/store/notifications.ts +426 -0
  565. package/store/prefs.js +2 -8
  566. package/store/slideInPanel.ts +6 -0
  567. package/store/type-map.js +35 -18
  568. package/store/type-map.utils.ts +49 -6
  569. package/store/uiplugins.ts +15 -1
  570. package/types/fleet.d.ts +60 -1
  571. package/types/kube/kube-api.ts +34 -0
  572. package/types/notifications/index.ts +74 -0
  573. package/types/resources/fleet.d.ts +43 -0
  574. package/types/resources/pod-security-admission.ts +36 -0
  575. package/types/resources/settings.d.ts +107 -0
  576. package/types/resources/userPreferences.d.ts +13 -0
  577. package/types/shell/index.d.ts +944 -744
  578. package/types/store/dashboard-store.types.ts +57 -4
  579. package/types/store/pagination.types.ts +41 -9
  580. package/types/store/subscribe.types.ts +50 -0
  581. package/utils/__mocks__/tabbable.js +13 -0
  582. package/utils/__tests__/back-off.test.ts +354 -0
  583. package/utils/__tests__/create-yaml.test.ts +235 -0
  584. package/utils/__tests__/fleet.test.ts +148 -0
  585. package/utils/__tests__/kontainer.test.ts +19 -0
  586. package/utils/__tests__/object.test.ts +54 -1
  587. package/utils/__tests__/string.test.ts +273 -1
  588. package/utils/__tests__/time.test.ts +31 -0
  589. package/utils/auth.js +41 -6
  590. package/utils/back-off.ts +176 -0
  591. package/utils/cluster.js +24 -20
  592. package/utils/create-yaml.js +103 -9
  593. package/utils/crypto/encryption.ts +103 -0
  594. package/utils/cspAdaptor.ts +51 -0
  595. package/utils/error.js +3 -6
  596. package/utils/errorTranslate.json +15 -0
  597. package/utils/fleet-types.ts +0 -0
  598. package/utils/fleet.ts +204 -74
  599. package/utils/grafana.js +1 -0
  600. package/utils/kontainer.ts +3 -5
  601. package/utils/object.js +36 -12
  602. package/utils/pagination-utils.ts +50 -3
  603. package/utils/pagination-wrapper.ts +132 -50
  604. package/utils/perf-setting.utils.ts +28 -0
  605. package/utils/release-notes.ts +48 -0
  606. package/utils/selector-typed.ts +210 -0
  607. package/utils/selector.js +29 -6
  608. package/utils/settings.ts +4 -1
  609. package/utils/string.js +24 -0
  610. package/utils/style.ts +39 -0
  611. package/utils/{time.js → time.ts} +25 -6
  612. package/utils/uiplugins.ts +41 -8
  613. package/utils/v-sphere.ts +5 -1
  614. package/utils/validators/formRules/__tests__/index.test.ts +76 -6
  615. package/utils/validators/formRules/index.ts +99 -4
  616. package/utils/window.js +11 -7
  617. package/vue.config.js +5 -5
  618. package/.DS_Store +0 -0
  619. package/components/AssignTo.vue +0 -199
  620. package/components/DisableAuthProviderModal.vue +0 -115
  621. package/components/MoveModal.vue +0 -167
  622. package/components/PromptChangePassword.vue +0 -123
  623. package/components/ResourceList/Masthead-btn.vue +0 -225
  624. package/components/__tests__/ApplicationCard.test.ts +0 -27
  625. package/components/cards/ApplicationCard.vue +0 -145
  626. package/components/fleet/FleetBundleResources.vue +0 -86
  627. package/components/fleet/ForceDirectedTreeChart/chartIcons.js +0 -17
  628. package/components/formatter/RKETemplateName.vue +0 -37
  629. package/config/product/legacy.js +0 -62
  630. package/config/secret.js +0 -14
  631. package/dialog/SaveAsRKETemplateDialog.vue +0 -139
  632. package/models/etcdbackup.js +0 -45
  633. package/pages/auth copy/login.vue +0 -595
  634. package/pages/auth copy/logout.vue +0 -47
  635. package/pages/auth copy/setup.vue +0 -523
  636. package/pages/auth copy/verify.vue +0 -203
  637. package/pages/c/_cluster/fleet/GitRepoGraphConfig.js +0 -249
  638. package/pages/c/_cluster/legacy/pages/_page.vue +0 -29
  639. package/pages/c/_cluster/legacy/project/_page.vue +0 -57
  640. package/pages/c/_cluster/legacy/project/index.vue +0 -32
  641. package/pages/c/_cluster/legacy/project/pipelines.vue +0 -96
@@ -68,6 +68,10 @@ export default {
68
68
  extensionParams: {
69
69
  type: Object,
70
70
  default: null
71
+ },
72
+ useHash: {
73
+ type: Boolean,
74
+ default: true
71
75
  }
72
76
  },
73
77
 
@@ -195,7 +199,7 @@ export default {
195
199
  pagination.filters = [];
196
200
  }
197
201
 
198
- const field = `involvedObject.uid`; // Pending API Support - https://github.com/rancher/rancher/issues/48603
202
+ const field = `involvedObject.uid`;
199
203
 
200
204
  // of type PaginationParamFilter
201
205
  let existing = null;
@@ -232,6 +236,8 @@ export default {
232
236
  <Tabbed
233
237
  v-bind="$attrs"
234
238
  :default-tab="defaultTab"
239
+ :resource="value"
240
+ :use-hash="useHash"
235
241
  @changed="tabChange"
236
242
  >
237
243
  <slot />
@@ -1,6 +1,5 @@
1
1
  <script lang="ts">
2
2
  import { defineComponent } from 'vue';
3
- import KnownHostsEditDialog from './KnownHostsEditDialog.vue';
4
3
  import { _EDIT, _VIEW } from '@shell/config/query-params';
5
4
 
6
5
  export default defineComponent({
@@ -20,8 +19,6 @@ export default defineComponent({
20
19
  },
21
20
  },
22
21
 
23
- components: { KnownHostsEditDialog },
24
-
25
22
  computed: {
26
23
  isViewMode() {
27
24
  return this.mode === _VIEW;
@@ -40,7 +37,20 @@ export default defineComponent({
40
37
  methods: {
41
38
  openDialog() {
42
39
  (this.$refs.button as HTMLInputElement)?.blur();
43
- (this.$refs.editDialog as any).showDialog();
40
+
41
+ this.$store.dispatch('management/promptModal', {
42
+ component: 'KnownHostsEditDialog',
43
+ returnFocusSelector: '#known-ssh-hosts-trigger',
44
+ testId: 'sshKnownHostsDialog',
45
+ height: 'auto',
46
+ componentProps: {
47
+ mode: this.mode,
48
+ value: this.value,
49
+ closed: (res: any) => {
50
+ this.dialogClosed(res);
51
+ }
52
+ }
53
+ });
44
54
  },
45
55
 
46
56
  dialogClosed(result: any) {
@@ -78,13 +88,6 @@ export default defineComponent({
78
88
  :alt="t('secret.ssh.editKnownHosts.title')"
79
89
  />
80
90
  </button>
81
-
82
- <KnownHostsEditDialog
83
- ref="editDialog"
84
- :value="value"
85
- :mode="mode"
86
- @closed="dialogClosed"
87
- />
88
91
  </template>
89
92
  </div>
90
93
  </template>
@@ -138,6 +138,13 @@ export default {
138
138
  }
139
139
  },
140
140
 
141
+ watch: {
142
+ namespace() {
143
+ // Namespace has changed, reset the selections
144
+ this.$emit('update:value', { [this.mountKey]: { secretKeyRef: { [this.nameKey]: undefined, [this.keyKey]: '' } } });
145
+ }
146
+ },
147
+
141
148
  methods: {
142
149
  /**
143
150
  * Provide a set of options for the LabelSelect ([none, ...{label, value}])
@@ -173,11 +180,18 @@ export default {
173
180
  paginatePageOptions(opts) {
174
181
  const { opts: { filter } } = opts;
175
182
 
176
- const filters = !!filter ? [PaginationParamFilter.createSingleField({ field: 'metadata.name', value: filter })] : [];
183
+ const filters = !!filter ? [PaginationParamFilter.createSingleField({
184
+ field: 'metadata.name', value: filter, exact: false, equals: true
185
+ })] : [];
177
186
 
178
187
  filters.push(
179
188
  PaginationParamFilter.createSingleField({ field: 'metadata.namespace', value: this.namespace }),
180
- PaginationParamFilter.createSingleField({ field: 'metadata.fields.1', value: this.types.join(',') })
189
+ PaginationParamFilter.createMultipleFields(this.types.map((t) => ({
190
+ field: 'metadata.fields.1',
191
+ equals: true,
192
+ exact: true,
193
+ value: t
194
+ })))
181
195
  );
182
196
 
183
197
  return {
@@ -201,6 +215,7 @@ export default {
201
215
  <div class="input-container">
202
216
  <!-- key by namespace to ensure label select current page is recreated on ns change -->
203
217
  <ResourceLabeledSelect
218
+ :key="namespace"
204
219
  v-model:value="name"
205
220
  :disabled="!isView && disabled"
206
221
  :label="secretNameLabel"
@@ -212,6 +227,7 @@ export default {
212
227
  />
213
228
  <LabeledSelect
214
229
  v-if="showKeySelector"
230
+ :key="namespace"
215
231
  v-model:value="key"
216
232
  class="col span-6"
217
233
  :disabled="isKeyDisabled"
@@ -5,6 +5,9 @@ import VueSelectOverrides from '@shell/mixins/vue-select-overrides';
5
5
  import { generateRandomAlphaString } from '@shell/utils/string';
6
6
  import { LabeledTooltip } from '@components/LabeledTooltip';
7
7
  import { onClickOption, calculatePosition } from '@shell/utils/select';
8
+ import { _VIEW } from '@shell/config/query-params';
9
+ import { useClickOutside } from '@shell/composables/useClickOutside';
10
+ import { ref } from 'vue';
8
11
 
9
12
  export default {
10
13
  emits: ['update:value', 'createdListItem', 'on-open', 'on-close'],
@@ -81,7 +84,7 @@ export default {
81
84
  },
82
85
  closeOnSelect: {
83
86
  type: Boolean,
84
- default: true
87
+ default: true,
85
88
  },
86
89
 
87
90
  compact: {
@@ -93,11 +96,18 @@ export default {
93
96
  default: false
94
97
  }
95
98
  },
99
+ setup() {
100
+ const select = ref(null);
101
+ const isOpen = ref(false);
102
+
103
+ useClickOutside(select, () => {
104
+ isOpen.value = false;
105
+ });
106
+
107
+ return { isOpen, select };
108
+ },
96
109
  data() {
97
- return {
98
- isOpen: false,
99
- generatedUid: `s-uid-${ generateRandomAlphaString(12) }`
100
- };
110
+ return { generatedUid: `s-uid-${ generateRandomAlphaString(12) }` };
101
111
  },
102
112
  methods: {
103
113
  // resizeHandler = in mixin
@@ -124,24 +134,20 @@ export default {
124
134
  calculatePosition(dropdownList, component, width, this.placement);
125
135
  },
126
136
 
127
- focusSearch() {
128
- // we need this override as in a "closeOnSelect" type of component
129
- // if we don't have this override, it would open again
130
- if (this.overridesMixinPreventDoubleTriggerKeysOpen) {
131
- this.$nextTick(() => {
132
- const el = this.$refs['select'];
133
-
134
- if ( el ) {
135
- el.focus();
136
- }
137
+ // Ensure we only focus on open, otherwise we re-open on close
138
+ clickSelect(ev) {
139
+ if (this.mode === _VIEW || this.loading === true || this.disabled === true) {
140
+ return;
141
+ }
137
142
 
138
- this.overridesMixinPreventDoubleTriggerKeysOpen = false;
139
- });
143
+ this.isOpen = !this.isOpen;
140
144
 
141
- return;
145
+ if (this.isOpen) {
146
+ this.focusSearch(ev);
142
147
  }
143
- this.$refs['select-input'].open = true;
148
+ },
144
149
 
150
+ focusSearch() {
145
151
  this.$nextTick(() => {
146
152
  const el = this.$refs['select-input']?.searchEl;
147
153
 
@@ -151,6 +157,10 @@ export default {
151
157
  });
152
158
  },
153
159
 
160
+ focusWrapper() {
161
+ this.$refs.select.focus();
162
+ },
163
+
154
164
  get,
155
165
 
156
166
  onClickOption(option, event) {
@@ -203,19 +213,36 @@ export default {
203
213
  },
204
214
 
205
215
  handleDropdownOpen(args) {
216
+ if (!this.isOpen) {
217
+ return false;
218
+ }
219
+
206
220
  // function that prevents the "opening dropdown on focus"
207
221
  // default behaviour of v-select
208
222
  return args.noDrop || args.disabled ? false : args.open;
209
223
  },
210
224
  onOpen() {
211
- this.isOpen = true;
225
+ this.focusSearch();
212
226
  this.$emit('on-open');
213
227
  this.resizeHandler();
214
228
  },
215
229
 
216
- onClose() {
230
+ closeOnSelecting() {
231
+ if (!this.closeOnSelect) {
232
+ return;
233
+ }
234
+
235
+ this.close();
236
+ },
237
+
238
+ close() {
217
239
  this.isOpen = false;
240
+ this.onClose();
241
+ },
242
+
243
+ onClose() {
218
244
  this.$emit('on-close');
245
+ this.focusWrapper();
219
246
  },
220
247
  },
221
248
  computed: {
@@ -280,11 +307,12 @@ export default {
280
307
  role="combobox"
281
308
  :aria-expanded="isOpen"
282
309
  :aria-label="$attrs['aria-label'] || undefined"
310
+ :aria-labelledby="$attrs['aria-labelledby'] || undefined"
283
311
  :aria-describedby="$attrs['aria-describedby'] || undefined"
284
- @click="focusSearch"
285
- @keydown.enter="focusSearch"
286
- @keydown.down.prevent="focusSearch"
287
- @keydown.space.prevent="focusSearch"
312
+ @click="clickSelect"
313
+ @keydown.self.enter="clickSelect"
314
+ @keydown.self.down.prevent="clickSelect"
315
+ @keydown.self.space.prevent="clickSelect"
288
316
  >
289
317
  <v-select
290
318
  ref="select-input"
@@ -299,7 +327,7 @@ export default {
299
327
  :get-option-label="(opt) => getOptionLabel(opt)"
300
328
  :label="optionLabel"
301
329
  :options="options"
302
- :close-on-select="closeOnSelect"
330
+ :close-on-select="false"
303
331
  :map-keydown="mappedKeys"
304
332
  :placeholder="placeholder"
305
333
  :reduce="(x) => reduce(x)"
@@ -317,6 +345,9 @@ export default {
317
345
  @open="onOpen"
318
346
  @close="onClose"
319
347
  @option:created="(e) => $emit('createdListItem', e)"
348
+ @option:selecting="closeOnSelecting"
349
+ @option:selected="closeOnSelect && close"
350
+ @keydown.enter.stop
320
351
  >
321
352
  <template #no-options>
322
353
  暂无数据
@@ -237,7 +237,7 @@ export default {
237
237
  let filteredSecrets = [];
238
238
 
239
239
  if (this.allSecrets) {
240
- // Fitler secrets given their namespace and required secret type
240
+ // Filter secrets given their namespace and required secret type
241
241
  filteredSecrets = this.allSecrets
242
242
  .filter((x) => this.filterByNamespace ? x.metadata.namespace === this.namespace : true
243
243
  )
@@ -450,6 +450,7 @@ export default {
450
450
  ),
451
451
  ],
452
452
  }),
453
+ watch: this.cacheSecrets,
453
454
  };
454
455
 
455
456
  if (this.cacheSecrets) {
@@ -464,9 +465,11 @@ export default {
464
465
  null,
465
466
  findPageArgs
466
467
  );
467
- const res = await this.$store.dispatch(`cluster/request`, { url });
468
+ // Strictly speaking this could be any store (request action should be agnostic)
469
+ const res = await this.$store.dispatch(`${ this.inStore }/request`, { url });
468
470
 
469
- return res?.data || [];
471
+ // Classify
472
+ return await this.$store.dispatch(`${ this.inStore }/createMany`, res?.data || []);
470
473
  },
471
474
 
472
475
  updateKeyVal() {
@@ -76,8 +76,11 @@ export default {
76
76
  key: props.initialKey,
77
77
  none: NONE,
78
78
  SECRET,
79
+ /**
80
+ * Of type @ResourceLabeledSelectSettings
81
+ */
79
82
  allSecretsSettings: {
80
- mapResult: (secrets) => {
83
+ updateResources: (secrets) => {
81
84
  const allSecretsInNamespace = secrets.filter((secret) => this.types.includes(secret._type) && secret.namespace === this.namespace);
82
85
  const mappedSecrets = this.mapSecrets(allSecretsInNamespace.sort((a, b) => a.name.localeCompare(b.name)));
83
86
 
@@ -86,9 +89,12 @@ export default {
86
89
  return mappedSecrets;
87
90
  }
88
91
  },
92
+ /**
93
+ * Of type @ResourceLabeledSelectPaginateSettings
94
+ */
89
95
  paginateSecretsSetting: {
90
96
  requestSettings: this.paginatePageOptions,
91
- mapResult: (secrets) => {
97
+ updateResources: (secrets) => {
92
98
  const mappedSecrets = this.mapSecrets(secrets);
93
99
 
94
100
  this.secrets = secrets; // We need the key from the selected secret. When paginating we won't touch the store, so just pass back here
@@ -151,11 +157,18 @@ export default {
151
157
  paginatePageOptions(opts) {
152
158
  const { opts: { filter } } = opts;
153
159
 
154
- const filters = !!filter ? [PaginationParamFilter.createSingleField({ field: 'metadata.name', value: filter })] : [];
160
+ const filters = !!filter ? [PaginationParamFilter.createSingleField({
161
+ field: 'metadata.name', value: filter, exact: false, equals: true
162
+ })] : [];
155
163
 
156
164
  filters.push(
157
165
  PaginationParamFilter.createSingleField({ field: 'metadata.namespace', value: this.namespace }),
158
- PaginationParamFilter.createSingleField({ field: 'metadata.fields.1', value: this.types.join(',') })
166
+ PaginationParamFilter.createMultipleFields(this.types.map((t) => ({
167
+ field: 'metadata.fields.1',
168
+ equals: true,
169
+ exact: true,
170
+ value: t
171
+ })))
159
172
  );
160
173
 
161
174
  return {
@@ -30,7 +30,19 @@ export default {
30
30
  effectValues: {
31
31
  type: Object,
32
32
  default: () => DEFAULT_EFFECT_VALUES
33
- }
33
+ },
34
+ title: {
35
+ type: String,
36
+ default: ''
37
+ },
38
+ addIcon: {
39
+ type: String,
40
+ default: '',
41
+ },
42
+ addClass: {
43
+ type: String,
44
+ default: '',
45
+ },
34
46
  },
35
47
 
36
48
  data() {
@@ -38,6 +50,10 @@ export default {
38
50
  },
39
51
 
40
52
  computed: {
53
+ _title() {
54
+ return this.title || this.t('tableHeaders.taints');
55
+ },
56
+
41
57
  localValue: {
42
58
  get() {
43
59
  return this.value;
@@ -60,7 +76,7 @@ export default {
60
76
  <KeyValue
61
77
  :value="value"
62
78
  data-testid="taints-keyvalue"
63
- :title="t('tableHeaders.taints')"
79
+ :title="_title"
64
80
  :mode="mode"
65
81
  :as-map="false"
66
82
  :read-allowed="false"
@@ -70,6 +86,8 @@ export default {
70
86
  :extra-columns="['effect']"
71
87
  :preserve-keys="['effect']"
72
88
  :add-label="t('labels.addTaint')"
89
+ :add-icon="addIcon"
90
+ :add-class="addClass"
73
91
  :disabled="disabled"
74
92
  @update:value="(e) => $emit('update:value', e)"
75
93
  >
@@ -82,6 +100,7 @@ export default {
82
100
  v-model:value="row.effect"
83
101
  :data-testid="`taints-effect-row-${i}`"
84
102
  :options="effectOptions"
103
+ :mode="mode"
85
104
  :disabled="disabled"
86
105
  class="compact-select"
87
106
  @update:value="queueUpdate"
@@ -93,6 +112,7 @@ export default {
93
112
 
94
113
  <style lang="scss" scoped>
95
114
  .compact-select {
96
- height: 40px;
115
+ height: 32px;
116
+ overflow: hidden;
97
117
  }
98
118
  </style>
@@ -2,6 +2,7 @@
2
2
  import { parseSi, formatSi, UNITS, FRACTIONAL } from '@shell/utils/units';
3
3
  import { LabeledInput } from '@components/Form/LabeledInput';
4
4
  import { _EDIT } from '@shell/config/query-params';
5
+ import { generateRandomAlphaString } from '@shell/utils/string';
5
6
 
6
7
  export default {
7
8
  components: { LabeledInput },
@@ -134,6 +135,22 @@ export default {
134
135
  type: Boolean,
135
136
  default: false,
136
137
  },
138
+
139
+ disabled: {
140
+ type: Boolean,
141
+ default: false,
142
+ },
143
+ /**
144
+ * The sub-label for the Labeled Input.
145
+ */
146
+ subLabel: {
147
+ type: String,
148
+ default: null
149
+ }
150
+ },
151
+
152
+ data() {
153
+ return { describedById: `unit-describedbyid-${ generateRandomAlphaString(12) }` };
137
154
  },
138
155
 
139
156
  computed: {
@@ -227,6 +244,7 @@ export default {
227
244
  type="number"
228
245
  :min="min"
229
246
  :mode="mode"
247
+ :disabled="disabled"
230
248
  :label="label"
231
249
  :delay="delay"
232
250
  :label-key="labelKey"
@@ -235,12 +253,15 @@ export default {
235
253
  :required="required"
236
254
  :placeholder="placeholder"
237
255
  :hide-arrows="hideArrows"
256
+ :aria-describedby="displayUnit ? describedById : undefined"
257
+ :sub-label="subLabel"
238
258
  @update:value="update"
239
259
  @blur="update($event.target.value)"
240
260
  >
241
261
  <template #suffixNew>
242
262
  <div
243
263
  v-if="displayUnit"
264
+ :id="describedById"
244
265
  class="addonNew"
245
266
  :class="{'with-tooltip': tooltip || tooltipKey}"
246
267
  >
@@ -25,6 +25,20 @@ export default {
25
25
  return { valueFrom: {} };
26
26
  }
27
27
  },
28
+ options: {
29
+ type: Array,
30
+ default: () => {
31
+ return [
32
+ { value: 'simple', label: 'Key/Value Pair' },
33
+ { value: 'resourceFieldRef', label: 'Resource' },
34
+ { value: 'configMapKeyRef', label: 'ConfigMap Key' },
35
+ { value: 'secretKeyRef', label: 'Secret Key' },
36
+ { value: 'fieldRef', label: 'Pod Field' },
37
+ { value: 'secretRef', label: 'Secret' },
38
+ { value: 'configMapRef', label: 'ConfigMap' },
39
+ ];
40
+ },
41
+ },
28
42
  allConfigMaps: {
29
43
  type: Array,
30
44
  default: () => []
@@ -46,15 +60,6 @@ export default {
46
60
 
47
61
  data() {
48
62
  return {
49
- typeOpts: [
50
- { value: 'simple', label: 'Key/Value Pair' },
51
- { value: 'resourceFieldRef', label: 'Resource' },
52
- { value: 'configMapKeyRef', label: 'ConfigMap Key' },
53
- { value: 'secretKeyRef', label: 'Secret key' },
54
- { value: 'fieldRef', label: 'Pod Field' },
55
- { value: 'secretRef', label: 'Secret' },
56
- { value: 'configMapRef', label: 'ConfigMap' },
57
- ],
58
63
  secrets: this.allSecrets,
59
64
  resourceKeyOpts: ['limits.cpu', 'limits.ephemeral-storage', 'limits.memory', 'requests.cpu', 'requests.ephemeral-storage', 'requests.memory'],
60
65
  };
@@ -70,7 +75,7 @@ export default {
70
75
  } else if (props.value.value) {
71
76
  type.value = 'simple';
72
77
  } else if (props.value.valueFrom) {
73
- type.value = Object.keys((props.value.valueFrom))[0] || 'simple';
78
+ type.value = Object.keys((props.value.valueFrom))[0] || props.options[0].value || 'simple';
74
79
  }
75
80
 
76
81
  const refName = ref('');
@@ -84,13 +89,13 @@ export default {
84
89
  switch (type.value) {
85
90
  case 'resourceFieldRef':
86
91
  name.value = props.value.name;
87
- refName.value = props.value.valueFrom[type.value].containerName;
88
- key.value = props.value.valueFrom[type.value].resource || '';
92
+ refName.value = props.value.valueFrom?.[type.value]?.containerName;
93
+ key.value = props.value.valueFrom?.[type.value]?.resource || '';
89
94
  break;
90
95
  case 'configMapKeyRef':
91
96
  name.value = props.value.name;
92
- key.value = props.value.valueFrom[type.value].key || '';
93
- refName.value = props.value.valueFrom[type.value].name;
97
+ key.value = props.value.valueFrom?.[type.value]?.key || '';
98
+ refName.value = props.value.valueFrom?.[type.value]?.name;
94
99
  referenced.value = props.allConfigMaps.filter((resource) => {
95
100
  return resource.metadata.name === refName.value;
96
101
  })[0];
@@ -101,12 +106,12 @@ export default {
101
106
  case 'secretRef':
102
107
  case 'configMapRef':
103
108
  name.value = props.value.prefix;
104
- refName.value = props.value[type.value].name;
109
+ refName.value = props.value[type.value]?.name;
105
110
  break;
106
111
  case 'secretKeyRef':
107
112
  name.value = props.value.name;
108
- key.value = props.value.valueFrom[type.value].key || '';
109
- refName.value = props.value.valueFrom[type.value].name;
113
+ key.value = props.value.valueFrom?.[type.value]?.key || '';
114
+ refName.value = props.value.valueFrom?.[type.value]?.name;
110
115
  referenced.value = props.allSecrets.filter((resource) => {
111
116
  return resource.metadata.name === refName.value;
112
117
  })[0];
@@ -269,6 +274,10 @@ export default {
269
274
  extraColumn() {
270
275
  return ['resourceFieldRef', 'configMapKeyRef', 'secretKeyRef'].includes(this.type);
271
276
  },
277
+
278
+ hideVariableName() {
279
+ return this.options?.find((opt) => opt.value === this.type)?.hideVariableName || false;
280
+ }
272
281
  },
273
282
  };
274
283
  </script>
@@ -280,7 +289,7 @@ export default {
280
289
  v-model:value="type"
281
290
  :mode="mode"
282
291
  :multiple="false"
283
- :options="typeOpts"
292
+ :options="options"
284
293
  option-label="label"
285
294
  :searchable="false"
286
295
  :reduce="e=>e.value"
@@ -289,7 +298,10 @@ export default {
289
298
  />
290
299
  </div>
291
300
 
292
- <div class="name">
301
+ <div
302
+ v-if="!hideVariableName"
303
+ class="name"
304
+ >
293
305
  <LabeledInput
294
306
  v-model:value="name"
295
307
  :label="nameLabel"