dashboard-shell-shell 1.0.10000011122 → 3.0.5-test.1

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 (695) 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/action.svg +6 -0
  11. package/assets/images/icons/document.svg +3 -0
  12. package/assets/images/key.svg +17 -0
  13. package/assets/images/pl/logo.png +0 -0
  14. package/assets/images/providers/sks.svg +1 -0
  15. package/assets/images/vendor/cognito.svg +1 -0
  16. package/assets/styles/app.scss +3 -0
  17. package/assets/styles/base/_basic.scss +10 -0
  18. package/assets/styles/base/_functions.scss +0 -0
  19. package/assets/styles/base/_mixins.scss +1 -1
  20. package/assets/styles/base/_spacing.scss +29 -0
  21. package/assets/styles/base/_variables.scss +16 -10
  22. package/assets/styles/global/_button.scss +17 -10
  23. package/assets/styles/global/_form.scss +2 -2
  24. package/assets/styles/global/_labeled-input.scss +7 -3
  25. package/assets/styles/global/_layout.scss +1 -1
  26. package/assets/styles/global/_select.scss +6 -7
  27. package/assets/styles/global/_table.scss +3 -2
  28. package/assets/styles/global/_tooltip.scss +8 -1
  29. package/assets/styles/themes/_dark.scss +32 -0
  30. package/assets/styles/themes/_light.scss +85 -4
  31. package/assets/styles/vendor/vue-select.scss +2 -1
  32. package/assets/translations/en-us.yaml +822 -107
  33. package/assets/translations/zh-hans.yaml +64 -31
  34. package/chart/__tests__/S3.test.ts +2 -1
  35. package/chart/monitoring/index.vue +1 -1
  36. package/cloud-credential/gcp.vue +9 -1
  37. package/components/ActionDropdown.vue +1 -0
  38. package/components/ActionMenuShell.vue +2 -3
  39. package/components/AppModal.vue +9 -28
  40. package/components/AsyncButton.vue +2 -0
  41. package/components/BrandImage.vue +1 -0
  42. package/components/Certificates.vue +5 -0
  43. package/components/ClusterIconMenu.vue +1 -1
  44. package/components/CodeMirror.vue +4 -3
  45. package/components/CommunityLinks.vue +3 -58
  46. package/components/ConfigMapSettings/Settings.vue +377 -0
  47. package/components/ConfigMapSettings/index.vue +354 -0
  48. package/components/CruResource.vue +104 -17
  49. package/components/CruResourceFooter.vue +1 -1
  50. package/components/DetailText.vue +61 -11
  51. package/components/Drawer/Chrome.vue +115 -0
  52. package/components/Drawer/ResourceDetailDrawer/ConfigTab.vue +61 -0
  53. package/components/Drawer/ResourceDetailDrawer/YamlTab.vue +48 -0
  54. package/components/Drawer/ResourceDetailDrawer/__tests__/ConfigTab.test.ts +54 -0
  55. package/components/Drawer/ResourceDetailDrawer/__tests__/YamlTab.test.ts +80 -0
  56. package/components/Drawer/ResourceDetailDrawer/__tests__/composables.test.ts +106 -0
  57. package/components/Drawer/ResourceDetailDrawer/__tests__/helpers.test.ts +42 -0
  58. package/components/Drawer/ResourceDetailDrawer/composables.ts +53 -0
  59. package/components/Drawer/ResourceDetailDrawer/helpers.ts +10 -0
  60. package/components/Drawer/ResourceDetailDrawer/index.vue +123 -0
  61. package/components/ExplorerProjectsNamespaces.vue +30 -33
  62. package/components/FilterPanel.vue +156 -0
  63. package/components/FixedBanner.vue +19 -5
  64. package/components/{fleet/ForceDirectedTreeChart/index.vue → ForceDirectedTreeChart.vue} +47 -41
  65. package/components/GlobalRoleBindings.vue +112 -48
  66. package/components/GrowlManager.vue +16 -15
  67. package/components/IconOrSvg.vue +19 -35
  68. package/components/IndentedPanel.vue +4 -10
  69. package/components/KeyValueView.vue +1 -1
  70. package/components/LandingPagePreference.vue +2 -0
  71. package/components/Loading.vue +1 -1
  72. package/components/LocaleSelector.vue +10 -2
  73. package/components/PaginatedResourceTable.vue +53 -1
  74. package/components/ProgressBarMulti.vue +1 -0
  75. package/components/PromptModal.vue +38 -7
  76. package/components/PromptRemove.vue +8 -4
  77. package/components/PromptRestore.vue +22 -44
  78. package/components/RelatedResources.vue +4 -12
  79. package/components/Resource/Detail/Additional.vue +46 -0
  80. package/components/Resource/Detail/Card/PodsCard/Bubble.vue +13 -0
  81. package/components/Resource/Detail/Card/PodsCard/composable.ts +30 -0
  82. package/components/Resource/Detail/Card/PodsCard/index.vue +118 -0
  83. package/components/Resource/Detail/Card/ResourceUsageCard/composable.ts +51 -0
  84. package/components/Resource/Detail/Card/ResourceUsageCard/index.vue +79 -0
  85. package/components/Resource/Detail/Card/Scaler.vue +89 -0
  86. package/components/Resource/Detail/Card/StateCard/composables.ts +112 -0
  87. package/components/Resource/Detail/Card/StateCard/index.vue +39 -0
  88. package/components/Resource/Detail/Card/VerticalGap.vue +11 -0
  89. package/components/Resource/Detail/Card/__tests__/Card.test.ts +36 -0
  90. package/components/Resource/Detail/Card/__tests__/PodsCard.test.ts +84 -0
  91. package/components/Resource/Detail/Card/__tests__/ResourceUsageCard.test.ts +72 -0
  92. package/components/Resource/Detail/Card/__tests__/Scaler.test.ts +87 -0
  93. package/components/Resource/Detail/Card/__tests__/StateCard.test.ts +53 -0
  94. package/components/Resource/Detail/Card/__tests__/VerticalGap.test.ts +14 -0
  95. package/components/Resource/Detail/Card/__tests__/index.test.ts +36 -0
  96. package/components/Resource/Detail/Card/index.vue +56 -0
  97. package/components/Resource/Detail/Metadata/Annotations/__tests__/index.test.ts +19 -0
  98. package/components/Resource/Detail/Metadata/Annotations/composable.ts +12 -0
  99. package/components/Resource/Detail/Metadata/Annotations/index.vue +31 -0
  100. package/components/Resource/Detail/Metadata/IdentifyingInformation/__tests__/identifying-fields.test.ts +223 -0
  101. package/components/Resource/Detail/Metadata/IdentifyingInformation/__tests__/index.test.ts +103 -0
  102. package/components/Resource/Detail/Metadata/IdentifyingInformation/composable.ts +72 -0
  103. package/components/Resource/Detail/Metadata/IdentifyingInformation/identifying-fields.ts +317 -0
  104. package/components/Resource/Detail/Metadata/IdentifyingInformation/index.vue +140 -0
  105. package/components/Resource/Detail/Metadata/KeyValue.vue +140 -0
  106. package/components/Resource/Detail/Metadata/Labels/__tests__/index.test.ts +18 -0
  107. package/components/Resource/Detail/Metadata/Labels/composable.ts +12 -0
  108. package/components/Resource/Detail/Metadata/Labels/index.vue +31 -0
  109. package/components/Resource/Detail/Metadata/Rectangle.vue +34 -0
  110. package/components/Resource/Detail/Metadata/__tests__/KeyValue.test.ts +107 -0
  111. package/components/Resource/Detail/Metadata/__tests__/Rectangle.test.ts +24 -0
  112. package/components/Resource/Detail/Metadata/__tests__/composables.test.ts +75 -0
  113. package/components/Resource/Detail/Metadata/__tests__/index.test.ts +91 -0
  114. package/components/Resource/Detail/Metadata/composables.ts +81 -0
  115. package/components/Resource/Detail/Metadata/index.vue +88 -0
  116. package/components/Resource/Detail/Page.vue +37 -0
  117. package/components/Resource/Detail/PercentageBar.vue +40 -0
  118. package/components/Resource/Detail/ResourceRow.vue +138 -0
  119. package/components/Resource/Detail/ResourceTabs/ConfigMapDataTab/__tests__/composables.test.ts +29 -0
  120. package/components/Resource/Detail/ResourceTabs/ConfigMapDataTab/__tests__/index.test.ts +48 -0
  121. package/components/Resource/Detail/ResourceTabs/ConfigMapDataTab/composables.ts +31 -0
  122. package/components/Resource/Detail/ResourceTabs/ConfigMapDataTab/index.vue +50 -0
  123. package/components/Resource/Detail/ResourceTabs/KnownHostsTab/__tests__/composables.test.ts +66 -0
  124. package/components/Resource/Detail/ResourceTabs/KnownHostsTab/composables.ts +21 -0
  125. package/components/Resource/Detail/ResourceTabs/KnownHostsTab/index.vue +31 -0
  126. package/components/Resource/Detail/ResourceTabs/SecretDataTab/Basic.vue +45 -0
  127. package/components/Resource/Detail/ResourceTabs/SecretDataTab/BasicAuth.vue +31 -0
  128. package/components/Resource/Detail/ResourceTabs/SecretDataTab/Certificate.vue +31 -0
  129. package/components/Resource/Detail/ResourceTabs/SecretDataTab/Registry.vue +22 -0
  130. package/components/Resource/Detail/ResourceTabs/SecretDataTab/ServiceAccountToken.vue +31 -0
  131. package/components/Resource/Detail/ResourceTabs/SecretDataTab/Ssh.vue +32 -0
  132. package/components/Resource/Detail/ResourceTabs/SecretDataTab/__tests__/Basic.test.ts +40 -0
  133. package/components/Resource/Detail/ResourceTabs/SecretDataTab/__tests__/BasicAuth.test.ts +33 -0
  134. package/components/Resource/Detail/ResourceTabs/SecretDataTab/__tests__/Certificate.test.ts +33 -0
  135. package/components/Resource/Detail/ResourceTabs/SecretDataTab/__tests__/Registry.test.ts +27 -0
  136. package/components/Resource/Detail/ResourceTabs/SecretDataTab/__tests__/ServiceAccountToken.test.ts +33 -0
  137. package/components/Resource/Detail/ResourceTabs/SecretDataTab/__tests__/Ssh.test.ts +33 -0
  138. package/components/Resource/Detail/ResourceTabs/SecretDataTab/__tests__/auth-types.test.ts +186 -0
  139. package/components/Resource/Detail/ResourceTabs/SecretDataTab/__tests__/composables.test.ts +102 -0
  140. package/components/Resource/Detail/ResourceTabs/SecretDataTab/auth-types.ts +109 -0
  141. package/components/Resource/Detail/ResourceTabs/SecretDataTab/composeables.ts +52 -0
  142. package/components/Resource/Detail/ResourceTabs/SecretDataTab/index.vue +71 -0
  143. package/components/Resource/Detail/SpacedRow.vue +14 -0
  144. package/components/Resource/Detail/StatusBar.vue +59 -0
  145. package/components/Resource/Detail/StatusRow.vue +61 -0
  146. package/components/Resource/Detail/TitleBar/Title.vue +14 -0
  147. package/components/Resource/Detail/TitleBar/Top.vue +14 -0
  148. package/components/Resource/Detail/TitleBar/__tests__/Title.test.ts +17 -0
  149. package/components/Resource/Detail/TitleBar/__tests__/Top.test.ts +17 -0
  150. package/components/Resource/Detail/TitleBar/__tests__/composables.test.ts +63 -0
  151. package/components/Resource/Detail/TitleBar/__tests__/index.test.ts +142 -0
  152. package/components/Resource/Detail/TitleBar/composables.ts +46 -0
  153. package/components/Resource/Detail/TitleBar/index.vue +204 -0
  154. package/components/Resource/Detail/Top/index.vue +34 -0
  155. package/components/Resource/Detail/__tests__/Page.test.ts +32 -0
  156. package/components/Resource/Detail/composables.ts +45 -0
  157. package/components/ResourceDetail/Masthead/__tests__/index.test.ts +70 -0
  158. package/components/ResourceDetail/{__tests__/Masthead.test.ts → Masthead/__tests__/legacy.test.ts} +3 -3
  159. package/components/ResourceDetail/Masthead/index.vue +65 -0
  160. package/components/ResourceDetail/Masthead/latest.vue +44 -0
  161. package/components/{rancherResourceDetail/Masthead.vue → ResourceDetail/Masthead/legacy.vue} +36 -16
  162. package/components/ResourceDetail/__tests__/index.test.ts +135 -0
  163. package/components/ResourceDetail/index.vue +75 -560
  164. package/components/{rancherResourceDetail/index.vue → ResourceDetail/legacy.vue} +28 -55
  165. package/components/ResourceList/Masthead.vue +188 -85
  166. package/components/ResourceList/ResourceLoadingIndicator.vue +5 -2
  167. package/components/ResourceList/index.vue +3 -2
  168. package/components/ResourceTable.vue +65 -16
  169. package/components/ResourceYaml.vue +15 -2
  170. package/components/RichTranslation.vue +106 -0
  171. package/components/SideNav.vue +66 -29
  172. package/components/SlideInPanelManager.vue +116 -14
  173. package/components/SortableTable/THead.vue +6 -0
  174. package/components/SortableTable/index.vue +490 -389
  175. package/components/SortableTable/paging.js +15 -16
  176. package/components/SortableTable/selection.js +22 -10
  177. package/components/StateDot/index.vue +28 -0
  178. package/components/StatusBadge.vue +6 -4
  179. package/components/SubtleLink.vue +25 -0
  180. package/components/Tabbed/Tab.vue +1 -1
  181. package/components/Tabbed/index.vue +65 -69
  182. package/components/Wizard.vue +16 -3
  183. package/components/YamlEditor.vue +1 -2
  184. package/components/__tests__/AsyncButton.test.ts +39 -0
  185. package/components/__tests__/ConfigMapSettings.test.ts +376 -0
  186. package/components/__tests__/CruResource.test.ts +63 -0
  187. package/components/__tests__/FilterPanel.test.ts +81 -0
  188. package/components/__tests__/GrowlManager.test.ts +0 -25
  189. package/components/__tests__/PromptModal.test.ts +146 -0
  190. package/components/__tests__/PromptRestore.test.ts +1 -65
  191. package/components/__tests__/RichTranslation.test.ts +115 -0
  192. package/components/auth/AuthBanner.vue +15 -14
  193. package/components/auth/Principal.vue +2 -2
  194. package/components/auth/RoleDetailEdit.vue +101 -8
  195. package/components/auth/SelectPrincipal.vue +1 -0
  196. package/components/auth/login/ldap.vue +2 -2
  197. package/components/auth/login/oidc.vue +6 -1
  198. package/components/fleet/FleetApplications.vue +174 -0
  199. package/components/fleet/FleetClusterTargets/TargetsList.vue +66 -0
  200. package/components/fleet/FleetClusterTargets/index.vue +455 -0
  201. package/components/fleet/FleetClusters.vue +25 -6
  202. package/components/fleet/FleetGitRepoPaths.vue +476 -0
  203. package/components/fleet/FleetHelmOps.vue +123 -0
  204. package/components/fleet/FleetIntro.vue +58 -28
  205. package/components/fleet/FleetNoWorkspaces.vue +5 -1
  206. package/components/fleet/FleetOCIStorageSecret.vue +171 -0
  207. package/components/fleet/FleetRepos.vue +37 -80
  208. package/components/fleet/FleetResources.vue +69 -27
  209. package/components/fleet/FleetSummary.vue +26 -51
  210. package/components/fleet/FleetValuesFrom.vue +295 -0
  211. package/components/fleet/__tests__/FleetClusterTargets.test.ts +1224 -0
  212. package/components/fleet/__tests__/FleetGitRepoPaths.test.ts +265 -0
  213. package/components/fleet/__tests__/FleetOCIStorageSecret.test.ts +213 -0
  214. package/components/fleet/__tests__/FleetSummary.test.ts +39 -39
  215. package/components/fleet/__tests__/FleetValuesFrom.test.ts +300 -0
  216. package/components/fleet/dashboard/Empty.vue +73 -0
  217. package/components/fleet/dashboard/ResourceCard.vue +184 -0
  218. package/components/fleet/dashboard/ResourceCardSummary.vue +195 -0
  219. package/components/fleet/dashboard/ResourceDetails.vue +194 -0
  220. package/components/fleet/dashboard/ResourcePanel.vue +384 -0
  221. package/components/form/ArrayList.vue +144 -116
  222. package/components/form/BannerSettings.vue +130 -61
  223. package/components/form/ChangePassword.vue +7 -5
  224. package/components/form/ColorInput.vue +67 -14
  225. package/components/form/FileImageSelector.vue +1 -1
  226. package/components/form/Footer.vue +11 -5
  227. package/components/form/InputWithSelect.vue +2 -0
  228. package/components/form/KeyValue.vue +118 -53
  229. package/components/form/LabeledSelect.vue +219 -201
  230. package/components/form/Labels.vue +91 -21
  231. package/components/form/MatchExpressions.vue +56 -9
  232. package/components/form/Members/ClusterPermissionsEditor.vue +1 -2
  233. package/components/form/Members/MembershipEditor.vue +1 -1
  234. package/components/form/NameNsDescription.vue +31 -14
  235. package/components/form/Networking.vue +24 -19
  236. package/components/form/NotificationSettings.vue +15 -1
  237. package/components/form/Password.vue +6 -2
  238. package/components/form/ResourceLabeledSelect.vue +22 -8
  239. package/components/form/ResourceQuota/Namespace.vue +1 -1
  240. package/components/form/ResourceQuota/NamespaceRow.vue +13 -10
  241. package/components/form/ResourceQuota/ProjectRow.vue +0 -1
  242. package/components/form/ResourceSelector.vue +27 -23
  243. package/components/form/ResourceTabs/index.vue +7 -1
  244. package/components/form/SSHKnownHosts/index.vue +14 -11
  245. package/components/form/SecretSelector.vue +18 -2
  246. package/components/form/Select.vue +59 -28
  247. package/components/form/SelectOrCreateAuthSecret.vue +6 -3
  248. package/components/form/SimpleSecretSelector.vue +17 -4
  249. package/components/form/Taints.vue +21 -2
  250. package/components/form/UnitInput.vue +21 -0
  251. package/components/form/ValueFromResource.vue +31 -19
  252. package/components/form/__tests__/ArrayList.test.ts +32 -0
  253. package/components/form/__tests__/ColorInput.test.ts +35 -0
  254. package/components/form/__tests__/KeyValue.test.ts +36 -0
  255. package/components/form/__tests__/LabeledSelect.test.ts +79 -2
  256. package/components/form/__tests__/Labels.test.ts +360 -0
  257. package/components/form/__tests__/MatchExpressions.test.ts +16 -13
  258. package/components/form/__tests__/Networking.test.ts +116 -0
  259. package/components/form/__tests__/SSHKnownHosts.test.ts +11 -2
  260. package/components/form/__tests__/Select.test.ts +37 -1
  261. package/components/form/__tests__/UnitInput.test.ts +23 -1
  262. package/components/form/labeled-select-utils/labeled-select-pagination.ts +3 -38
  263. package/components/formatter/ClusterLink.vue +5 -8
  264. package/components/formatter/Description.vue +30 -0
  265. package/components/formatter/FleetApplicationClustersReady.vue +77 -0
  266. package/components/formatter/FleetApplicationSource.vue +79 -0
  267. package/components/formatter/FleetSummaryGraph.vue +7 -0
  268. package/components/formatter/PodImages.vue +1 -1
  269. package/components/formatter/WorkloadHealthScale.vue +1 -1
  270. package/components/formatter/__tests__/ClusterLink.test.ts +2 -32
  271. package/components/formatter/__tests__/LiveDate.test.ts +10 -2
  272. package/components/google/AccountAccess.vue +209 -0
  273. package/components/google/types/gcp.d.ts +136 -0
  274. package/components/google/types/index.d.ts +101 -0
  275. package/components/google/util/__mocks__/gcp.ts +465 -0
  276. package/components/google/util/formatter.ts +82 -0
  277. package/components/google/util/gcp.ts +134 -0
  278. package/components/google/util/index.d.ts +11 -0
  279. package/components/nav/Favorite.vue +6 -2
  280. package/components/nav/Group.vue +74 -23
  281. package/components/nav/Header.vue +103 -52
  282. package/components/nav/HeaderPageActionMenu.vue +1 -0
  283. package/components/nav/NamespaceFilter.vue +141 -87
  284. package/components/nav/NotificationCenter/Notification.vue +484 -0
  285. package/components/nav/NotificationCenter/NotificationHeader.vue +112 -0
  286. package/components/nav/NotificationCenter/index.vue +148 -0
  287. package/components/nav/TopLevelMenu.helper.ts +55 -34
  288. package/components/nav/TopLevelMenu.vue +193 -119
  289. package/components/nav/Type.vue +52 -12
  290. package/components/nav/WindowManager/ContainerLogs.vue +87 -61
  291. package/components/nav/WindowManager/ContainerLogsActions.vue +76 -0
  292. package/components/nav/WindowManager/index.vue +3 -2
  293. package/components/templates/default.vue +0 -3
  294. package/components/templates/plain.vue +0 -3
  295. package/composables/drawer.ts +26 -0
  296. package/composables/focusTrap.ts +3 -3
  297. package/composables/resources.test.ts +63 -0
  298. package/composables/resources.ts +38 -0
  299. package/composables/useClickOutside.ts +1 -1
  300. package/composables/useI18n.ts +12 -11
  301. package/composables/useIsNewDetailPageEnabled.ts +17 -0
  302. package/config/labels-annotations.js +22 -11
  303. package/config/pagination-table-headers.js +8 -1
  304. package/config/private-label.js +0 -1
  305. package/config/product/auth.js +33 -7
  306. package/config/product/{cis.js → compliance.js} +23 -26
  307. package/config/product/explorer.js +48 -16
  308. package/config/product/fleet.js +77 -17
  309. package/config/product/manager.js +1 -29
  310. package/config/product/settings.js +39 -18
  311. package/config/query-params.js +16 -1
  312. package/config/roles.ts +2 -1
  313. package/config/router/navigation-guards/authentication.js +51 -2
  314. package/config/router/navigation-guards/index.js +5 -67
  315. package/config/router/routes.js +65 -31
  316. package/config/secret.ts +15 -0
  317. package/config/settings.ts +61 -16
  318. package/config/store.js +2 -0
  319. package/config/system-namespaces.js +1 -1
  320. package/config/table-headers.js +91 -30
  321. package/config/types.js +18 -7
  322. package/config/version.js +1 -1
  323. package/core/plugin-helpers.ts +3 -2
  324. package/core/plugin.ts +32 -7
  325. package/core/types.ts +25 -7
  326. package/detail/catalog.cattle.io.app.vue +5 -1
  327. package/detail/{cis.cattle.io.clusterscan.vue → compliance.cattle.io.clusterscan.vue} +22 -18
  328. package/detail/fleet.cattle.io.bundle.vue +70 -6
  329. package/detail/fleet.cattle.io.cluster.vue +28 -15
  330. package/detail/fleet.cattle.io.gitrepo.vue +11 -2
  331. package/detail/fleet.cattle.io.helmop.vue +157 -0
  332. package/detail/management.cattle.io.fleetworkspace.vue +18 -27
  333. package/detail/management.cattle.io.oidcclient.vue +369 -0
  334. package/detail/namespace.vue +0 -3
  335. package/detail/node.vue +20 -16
  336. package/detail/pod.vue +2 -2
  337. package/detail/provisioning.cattle.io.cluster.vue +16 -50
  338. package/detail/service.vue +10 -2
  339. package/detail/workload/index.vue +48 -39
  340. package/dialog/AddCustomBadgeDialog.vue +0 -1
  341. package/{pages/c/_cluster/uiplugins/AddExtensionRepos.vue → dialog/AddExtensionReposDialog.vue} +72 -42
  342. package/dialog/AddonConfigConfirmationDialog.vue +1 -1
  343. package/dialog/AssignToDialog.vue +176 -0
  344. package/dialog/ChangePasswordDialog.vue +106 -0
  345. package/{pages/c/_cluster/uiplugins/DeveloperInstallDialog.vue → dialog/DeveloperLoadExtensionDialog.vue} +74 -71
  346. package/dialog/DisableAuthProviderDialog.vue +101 -0
  347. package/dialog/DrainNode.vue +1 -1
  348. package/{pages/c/_cluster/uiplugins/CatalogList/CatalogLoadDialog.vue → dialog/ExtensionCatalogInstallDialog.vue} +100 -88
  349. package/{pages/c/_cluster/uiplugins/CatalogList/CatalogUninstallDialog.vue → dialog/ExtensionCatalogUninstallDialog.vue} +87 -66
  350. package/dialog/FeatureFlagListDialog.vue +288 -0
  351. package/dialog/ForceMachineRemoveDialog.vue +1 -1
  352. package/dialog/GenericPrompt.vue +1 -1
  353. package/dialog/HelmOpForceUpdateDialog.vue +132 -0
  354. package/{components/Import.vue → dialog/ImportDialog.vue} +8 -13
  355. package/{pages/c/_cluster/uiplugins/InstallDialog.vue → dialog/InstallExtensionDialog.vue} +124 -106
  356. package/{components/form/SSHKnownHosts → dialog}/KnownHostsEditDialog.vue +52 -62
  357. package/dialog/MoveNamespaceDialog.vue +157 -0
  358. package/dialog/OidcClientSecretDialog.vue +117 -0
  359. package/dialog/RedeployWorkloadDialog.vue +164 -0
  360. package/dialog/RotateEncryptionKeyDialog.vue +10 -30
  361. package/dialog/ScalePoolDownDialog.vue +1 -1
  362. package/{components/nav/Jump.vue → dialog/SearchDialog.vue} +34 -14
  363. package/{pages/c/_cluster/uiplugins/UninstallDialog.vue → dialog/UninstallExtensionDialog.vue} +67 -58
  364. package/dialog/WechatDialog.vue +57 -0
  365. package/{components/form/SSHKnownHosts → dialog}/__tests__/KnownHostsEditDialog.test.ts +15 -34
  366. package/edit/__tests__/cis.cattle.io.clusterscan.test.ts +3 -3
  367. package/edit/__tests__/fleet.cattle.io.gitrepo.test.ts +60 -68
  368. package/edit/__tests__/fleet.cattle.io.helmop.test.ts +224 -0
  369. package/edit/__tests__/service.test.ts +2 -1
  370. package/edit/auth/ldap/__tests__/config.test.ts +14 -0
  371. package/edit/auth/ldap/config.vue +24 -0
  372. package/edit/auth/oidc.vue +159 -93
  373. package/edit/autoscaling.horizontalpodautoscaler/index.vue +4 -1
  374. package/edit/{cis.cattle.io.clusterscan.vue → compliance.cattle.io.clusterscan.vue} +30 -31
  375. package/edit/{cis.cattle.io.clusterscanbenchmark.vue → compliance.cattle.io.clusterscanbenchmark.vue} +4 -4
  376. package/edit/{cis.cattle.io.clusterscanprofile.vue → compliance.cattle.io.clusterscanprofile.vue} +5 -5
  377. package/edit/configmap.vue +8 -2
  378. package/edit/constraints.gatekeeper.sh.constraint/index.vue +1 -0
  379. package/edit/fleet.cattle.io.gitrepo.vue +70 -256
  380. package/edit/fleet.cattle.io.helmop.vue +786 -0
  381. package/edit/helm.cattle.io.projecthelmchart.vue +1 -0
  382. package/edit/k8s.cni.cncf.io.networkattachmentdefinition.vue +1 -0
  383. package/edit/logging-flow/index.vue +1 -0
  384. package/edit/logging.banzaicloud.io.output/index.vue +2 -1
  385. package/edit/logging.banzaicloud.io.output/providers/awsElasticsearch.vue +5 -6
  386. package/edit/management.cattle.io.fleetworkspace.vue +44 -10
  387. package/edit/management.cattle.io.oidcclient.vue +162 -0
  388. package/edit/management.cattle.io.project.vue +4 -1
  389. package/edit/management.cattle.io.user.vue +17 -4
  390. package/edit/monitoring.coreos.com.alertmanagerconfig/index.vue +1 -1
  391. package/edit/monitoring.coreos.com.alertmanagerconfig/receiverConfig.vue +5 -0
  392. package/edit/monitoring.coreos.com.prometheusrule/index.vue +1 -0
  393. package/edit/monitoring.coreos.com.receiver/auth.vue +3 -3
  394. package/edit/monitoring.coreos.com.receiver/index.vue +1 -0
  395. package/edit/monitoring.coreos.com.receiver/types/email.vue +1 -1
  396. package/edit/monitoring.coreos.com.route.vue +1 -0
  397. package/edit/namespace.vue +2 -4
  398. package/edit/networking.istio.io.destinationrule/index.vue +4 -1
  399. package/edit/networking.k8s.io.ingress/Certificate.vue +11 -3
  400. package/edit/networking.k8s.io.ingress/RulePath.vue +1 -1
  401. package/edit/networking.k8s.io.ingress/__tests__/Certificate.test.ts +37 -0
  402. package/edit/networking.k8s.io.ingress/index.vue +4 -1
  403. package/edit/networking.k8s.io.networkpolicy/PolicyRule.vue +3 -14
  404. package/edit/networking.k8s.io.networkpolicy/PolicyRuleTarget.vue +57 -62
  405. package/edit/networking.k8s.io.networkpolicy/PolicyRules.vue +10 -16
  406. package/edit/networking.k8s.io.networkpolicy/__tests__/PolicyRuleTarget.test.ts +72 -41
  407. package/edit/networking.k8s.io.networkpolicy/__tests__/utils/mock.json +17 -1
  408. package/edit/networking.k8s.io.networkpolicy/index.vue +23 -31
  409. package/edit/node.vue +1 -0
  410. package/edit/persistentvolume/index.vue +4 -1
  411. package/edit/provisioning.cattle.io.cluster/__tests__/DirectoryConfig.test.ts +26 -12
  412. package/edit/provisioning.cattle.io.cluster/__tests__/rke2.test.ts +69 -2
  413. package/edit/provisioning.cattle.io.cluster/__tests__/utils/rke2-test-data.ts +58 -0
  414. package/edit/provisioning.cattle.io.cluster/index.vue +21 -73
  415. package/edit/provisioning.cattle.io.cluster/rke2.vue +535 -428
  416. package/edit/provisioning.cattle.io.cluster/tabs/Basics.vue +48 -39
  417. package/edit/provisioning.cattle.io.cluster/tabs/DirectoryConfig.vue +5 -3
  418. package/edit/provisioning.cattle.io.cluster/tabs/MachinePool.vue +5 -0
  419. package/edit/provisioning.cattle.io.cluster/tabs/registries/RegistryConfigs.vue +2 -2
  420. package/edit/resources.cattle.io.restore.vue +1 -1
  421. package/edit/secret/basic.vue +1 -0
  422. package/edit/secret/index.vue +127 -15
  423. package/edit/service.vue +17 -29
  424. package/edit/serviceaccount.vue +4 -1
  425. package/edit/storage.k8s.io.storageclass/index.vue +4 -1
  426. package/edit/token.vue +1 -1
  427. package/edit/workload/index.vue +11 -15
  428. package/edit/workload/mixins/workload.js +0 -2
  429. package/list/{cis.cattle.io.clusterscan.vue → compliance.cattle.io.clusterscan.vue} +2 -2
  430. package/list/fleet.cattle.io.gitrepo.vue +1 -1
  431. package/list/fleet.cattle.io.helmop.vue +108 -0
  432. package/list/management.cattle.io.feature.vue +4 -288
  433. package/list/management.cattle.io.oidcclient.vue +108 -0
  434. package/list/management.cattle.io.setting.vue +22 -13
  435. package/list/management.cattle.io.user.vue +7 -3
  436. package/list/namespace.vue +6 -2
  437. package/list/node.vue +2 -0
  438. package/list/projectsecret.vue +345 -0
  439. package/list/provisioning.cattle.io.cluster.vue +6 -7
  440. package/list/secret.vue +109 -0
  441. package/list/workload.vue +6 -2
  442. package/machine-config/__tests__/vmwarevsphere.test.ts +5 -7
  443. package/machine-config/amazonec2.vue +3 -24
  444. package/machine-config/components/GCEImage.vue +374 -0
  445. package/machine-config/google.vue +617 -0
  446. package/machine-config/vmwarevsphere.vue +7 -17
  447. package/mixins/__tests__/brand.spec.ts +170 -0
  448. package/mixins/auth-config.js +8 -1
  449. package/mixins/brand.js +33 -17
  450. package/mixins/create-edit-view/impl.js +10 -1
  451. package/mixins/create-edit-view/index.js +5 -0
  452. package/mixins/preset.js +100 -0
  453. package/mixins/resource-fetch-api-pagination.js +73 -44
  454. package/mixins/resource-fetch.js +18 -8
  455. package/mixins/resource-table-watch.js +45 -0
  456. package/mixins/vue-select-overrides.js +1 -4
  457. package/models/__tests__/chart.test.ts +296 -0
  458. package/models/__tests__/fleet.cattle.io.gitrepo.test.ts +1 -1
  459. package/models/__tests__/fleet.cattle.io.helmop.test.ts +224 -0
  460. package/models/__tests__/node.test.ts +7 -63
  461. package/models/__tests__/workload.test.ts +1 -0
  462. package/models/chart.js +157 -2
  463. package/models/cluster/node.js +2 -1
  464. package/models/cluster.js +32 -2
  465. package/models/cluster.x-k8s.io.machinedeployment.js +11 -2
  466. package/models/{cis.cattle.io.clusterscan.js → compliance.cattle.io.clusterscan.js} +8 -8
  467. package/models/{cis.cattle.io.clusterscanbenchmark.js → compliance.cattle.io.clusterscanbenchmark.js} +1 -1
  468. package/models/{cis.cattle.io.clusterscanprofile.js → compliance.cattle.io.clusterscanprofile.js} +5 -5
  469. package/models/{cis.cattle.io.clusterscanreport.js → compliance.cattle.io.clusterscanreport.js} +1 -1
  470. package/models/fleet-application.js +297 -0
  471. package/models/fleet.cattle.io.bundle.js +9 -8
  472. package/models/fleet.cattle.io.cluster.js +21 -4
  473. package/models/fleet.cattle.io.gitrepo.js +46 -382
  474. package/models/fleet.cattle.io.helmop.js +202 -0
  475. package/models/management.cattle.io.authconfig.js +1 -0
  476. package/models/management.cattle.io.cluster.js +0 -20
  477. package/models/management.cattle.io.feature.js +7 -1
  478. package/models/management.cattle.io.fleetworkspace.js +14 -1
  479. package/models/management.cattle.io.node.js +7 -22
  480. package/models/management.cattle.io.nodepool.js +12 -0
  481. package/models/management.cattle.io.oidcclient.js +18 -0
  482. package/models/management.cattle.io.registration.js +3 -0
  483. package/models/management.cattle.io.setting.js +0 -1
  484. package/models/namespace.js +12 -1
  485. package/models/provisioning.cattle.io.cluster.js +60 -97
  486. package/models/secret.js +157 -2
  487. package/models/service.js +28 -9
  488. package/models/storage.k8s.io.storageclass.js +2 -2
  489. package/models/workload.js +91 -51
  490. package/package.json +6 -5
  491. package/pages/about.vue +17 -61
  492. package/pages/account/index.vue +9 -1
  493. package/pages/auth/login.vue +50 -30
  494. package/pages/auth/verify.vue +13 -1
  495. package/pages/c/_cluster/apps/charts/AddRepoLink.vue +36 -0
  496. package/pages/c/_cluster/apps/charts/AppChartCardFooter.vue +80 -0
  497. package/pages/c/_cluster/apps/charts/AppChartCardSubHeader.vue +57 -0
  498. package/pages/c/_cluster/apps/charts/StatusLabel.vue +33 -0
  499. package/pages/c/_cluster/apps/charts/index.vue +501 -468
  500. package/pages/c/_cluster/apps/charts/install.vue +0 -1
  501. package/pages/c/_cluster/auth/roles/index.vue +19 -1
  502. package/pages/c/_cluster/auth/user.retention/index.vue +87 -78
  503. package/pages/c/_cluster/explorer/EventsTable.vue +1 -1
  504. package/pages/c/_cluster/explorer/index.vue +14 -3
  505. package/pages/c/_cluster/explorer/projectsecret.vue +34 -0
  506. package/pages/c/_cluster/explorer/tools/pages/_page.vue +0 -1
  507. package/pages/c/_cluster/fleet/__tests__/index.test.ts +720 -0
  508. package/pages/c/_cluster/fleet/application/_resource/_id.vue +14 -0
  509. package/pages/c/_cluster/fleet/application/_resource/create.vue +14 -0
  510. package/pages/c/_cluster/fleet/application/create.vue +341 -0
  511. package/pages/c/_cluster/fleet/application/index.vue +139 -0
  512. package/pages/c/_cluster/fleet/graph/config.js +277 -0
  513. package/pages/c/_cluster/fleet/index.vue +866 -328
  514. package/pages/c/_cluster/fleet/settings/index.vue +229 -0
  515. package/pages/c/_cluster/longhorn/index.vue +5 -2
  516. package/pages/c/_cluster/settings/banners.vue +230 -103
  517. package/pages/c/_cluster/settings/brand.vue +349 -301
  518. package/pages/c/_cluster/settings/performance.vue +68 -64
  519. package/pages/c/_cluster/uiplugins/CatalogList/index.vue +16 -1
  520. package/pages/c/_cluster/uiplugins/PluginInfoPanel.vue +2 -2
  521. package/pages/c/_cluster/uiplugins/__tests__/AddExtensionRepos.test.ts +4 -7
  522. package/pages/c/_cluster/uiplugins/index.vue +98 -55
  523. package/pages/explorer/resource/detail/configmap.vue +42 -0
  524. package/pages/explorer/resource/detail/projectsecret.vue +9 -0
  525. package/pages/explorer/resource/detail/secret.vue +63 -0
  526. package/pages/home.vue +61 -108
  527. package/pages/prefs.vue +25 -24
  528. package/pages/support/index.vue +4 -6
  529. package/pkg/tsconfig.json +9 -9
  530. package/pkg/vue.config.js +1 -1
  531. package/plugins/clean-html.js +2 -0
  532. package/plugins/dashboard-store/__tests__/actions.test.ts +4 -1
  533. package/plugins/dashboard-store/__tests__/normalize.test.ts +223 -0
  534. package/plugins/dashboard-store/__tests__/resource-class.test.ts +191 -0
  535. package/plugins/dashboard-store/__tests__/utils/normalize-usecases.ts +1526 -0
  536. package/plugins/dashboard-store/actions.js +212 -55
  537. package/plugins/dashboard-store/getters.js +112 -24
  538. package/plugins/dashboard-store/mutations.js +61 -12
  539. package/plugins/dashboard-store/normalize.js +29 -19
  540. package/plugins/dashboard-store/resource-class.js +132 -49
  541. package/plugins/steve/__tests__/getters.test.ts +19 -12
  542. package/plugins/steve/__tests__/steve-class.test.ts +1 -0
  543. package/plugins/steve/__tests__/subscribe.spec.ts +324 -1
  544. package/plugins/steve/actions.js +37 -24
  545. package/plugins/steve/getters.js +47 -12
  546. package/plugins/steve/resourceWatcher.js +10 -3
  547. package/plugins/steve/steve-class.js +5 -0
  548. package/plugins/steve/steve-pagination-utils.ts +225 -43
  549. package/plugins/steve/subscribe.js +418 -53
  550. package/plugins/steve/worker/web-worker.advanced.js +5 -1
  551. package/promptRemove/mixin/roleDeletionCheck.js +2 -2
  552. package/rancher-components/Banner/Banner.test.ts +51 -3
  553. package/rancher-components/Banner/Banner.vue +37 -6
  554. package/rancher-components/Form/Checkbox/Checkbox.test.ts +59 -1
  555. package/rancher-components/Form/Checkbox/Checkbox.vue +27 -9
  556. package/rancher-components/Form/LabeledInput/LabeledInput.test.ts +51 -0
  557. package/rancher-components/Form/LabeledInput/LabeledInput.vue +21 -3
  558. package/rancher-components/Form/Radio/RadioButton.test.ts +36 -1
  559. package/rancher-components/Form/Radio/RadioButton.vue +21 -5
  560. package/rancher-components/Form/Radio/RadioGroup.test.ts +60 -0
  561. package/rancher-components/Form/Radio/RadioGroup.vue +81 -38
  562. package/rancher-components/Form/TextArea/TextAreaAutoGrow.vue +4 -0
  563. package/rancher-components/Form/ToggleSwitch/ToggleSwitch.vue +22 -1
  564. package/rancher-components/LabeledTooltip/LabeledTooltip.vue +1 -0
  565. package/rancher-components/RcButton/RcButton.vue +1 -1
  566. package/rancher-components/RcDropdown/RcDropdown.test.ts +98 -0
  567. package/rancher-components/RcDropdown/RcDropdown.vue +6 -0
  568. package/rancher-components/RcDropdown/RcDropdownItem.vue +8 -55
  569. package/rancher-components/RcDropdown/RcDropdownItemCheckbox.vue +69 -0
  570. package/rancher-components/RcDropdown/RcDropdownItemSelect.vue +93 -0
  571. package/rancher-components/RcDropdown/RcDropdownMenu.vue +7 -8
  572. package/rancher-components/RcDropdown/index.ts +2 -0
  573. package/rancher-components/RcDropdown/useDropdownContext.ts +21 -0
  574. package/rancher-components/RcDropdown/useDropdownItem.ts +92 -0
  575. package/rancher-components/RcItemCard/RcItemCard.test.ts +189 -0
  576. package/rancher-components/RcItemCard/RcItemCard.vue +430 -0
  577. package/rancher-components/RcItemCard/RcItemCardAction.vue +24 -0
  578. package/rancher-components/RcItemCard/index.ts +2 -0
  579. package/rancher-components/StringList/StringList.vue +1 -1
  580. package/scripts/clean +0 -0
  581. package/scripts/extension/bundle +0 -0
  582. package/scripts/extension/helm/scripts/package +0 -0
  583. package/scripts/extension/helm/scripts/patch +0 -0
  584. package/scripts/extension/helm/scripts/version +0 -0
  585. package/scripts/extension/helmpatch +0 -0
  586. package/scripts/extension/parse-tag-name +0 -0
  587. package/scripts/extension/publish +1 -1
  588. package/scripts/publish-shell.sh +86 -60
  589. package/scripts/serve-pkgs +0 -0
  590. package/scripts/sync-shell-deps +0 -0
  591. package/scripts/typegen.sh +44 -28
  592. package/static/loading-indicator.html +1 -1
  593. package/store/action-menu.js +26 -56
  594. package/store/auth.js +3 -0
  595. package/store/catalog.js +85 -25
  596. package/store/features.js +0 -1
  597. package/store/growl.js +97 -8
  598. package/store/i18n.js +5 -5
  599. package/store/index.js +44 -14
  600. package/store/notifications.ts +426 -0
  601. package/store/prefs.js +11 -5
  602. package/store/slideInPanel.ts +6 -0
  603. package/store/type-map.js +34 -17
  604. package/store/type-map.utils.ts +49 -6
  605. package/store/uiplugins.ts +15 -1
  606. package/types/fleet.d.ts +60 -1
  607. package/types/kube/kube-api.ts +34 -0
  608. package/types/notifications/index.ts +74 -0
  609. package/types/resources/fleet.d.ts +43 -0
  610. package/types/resources/pod-security-admission.ts +36 -0
  611. package/types/resources/settings.d.ts +107 -0
  612. package/types/resources/userPreferences.d.ts +13 -0
  613. package/types/shell/index.d.ts +971 -745
  614. package/types/store/dashboard-store.types.ts +57 -4
  615. package/types/store/pagination.types.ts +41 -9
  616. package/types/store/subscribe.types.ts +50 -0
  617. package/utils/__mocks__/tabbable.js +13 -0
  618. package/utils/__tests__/back-off.test.ts +354 -0
  619. package/utils/__tests__/create-yaml.test.ts +235 -0
  620. package/utils/__tests__/fleet.test.ts +148 -0
  621. package/utils/__tests__/kontainer.test.ts +19 -0
  622. package/utils/__tests__/object.test.ts +54 -1
  623. package/utils/__tests__/string.test.ts +273 -1
  624. package/utils/__tests__/time.test.ts +31 -0
  625. package/utils/auth.js +41 -6
  626. package/utils/back-off.ts +176 -0
  627. package/utils/cluster.js +24 -20
  628. package/utils/create-yaml.js +103 -9
  629. package/utils/crypto/encryption.ts +103 -0
  630. package/utils/cspAdaptor.ts +51 -0
  631. package/utils/error.js +4 -5
  632. package/utils/fleet-types.ts +0 -0
  633. package/utils/fleet.ts +204 -74
  634. package/utils/grafana.js +1 -0
  635. package/utils/kontainer.ts +3 -5
  636. package/utils/object.js +36 -12
  637. package/utils/pagination-utils.ts +50 -3
  638. package/utils/pagination-wrapper.ts +132 -50
  639. package/utils/perf-setting.utils.ts +28 -0
  640. package/utils/release-notes.ts +48 -0
  641. package/utils/selector-typed.ts +210 -0
  642. package/utils/selector.js +29 -6
  643. package/utils/settings.ts +4 -1
  644. package/utils/string.js +24 -0
  645. package/utils/style.ts +39 -0
  646. package/utils/{time.js → time.ts} +25 -6
  647. package/utils/uiplugins.ts +41 -8
  648. package/utils/v-sphere.ts +5 -1
  649. package/utils/validators/formRules/__tests__/index.test.ts +76 -6
  650. package/utils/validators/formRules/index.ts +99 -4
  651. package/utils/window.js +11 -7
  652. package/vue.config.js +1 -6
  653. package/.DS_Store +0 -0
  654. package/components/AssignTo.vue +0 -199
  655. package/components/DisableAuthProviderModal.vue +0 -115
  656. package/components/MoveModal.vue +0 -167
  657. package/components/PromptChangePassword.vue +0 -123
  658. package/components/ResourceDetail/Masthead.vue +0 -842
  659. package/components/__tests__/ApplicationCard.test.ts +0 -27
  660. package/components/cards/ApplicationCard.vue +0 -145
  661. package/components/fleet/FleetBundleResources.vue +0 -86
  662. package/components/fleet/ForceDirectedTreeChart/chartIcons.js +0 -17
  663. package/components/formatter/RKETemplateName.vue +0 -37
  664. package/components/rancherResourceDetail/__tests__/Masthead.test.ts +0 -65
  665. package/components/rancherResourceList/Masthead-btn.vue +0 -225
  666. package/components/rancherResourceList/Masthead.vue +0 -375
  667. package/components/rancherResourceList/ResourceLoadingIndicator.vue +0 -140
  668. package/components/rancherResourceList/index.vue +0 -307
  669. package/components/rancherResourceList/resource-list.config.js +0 -7
  670. package/components/rancherResourceTable.vue +0 -783
  671. package/components/rancherSortableTable/THead.vue +0 -561
  672. package/components/rancherSortableTable/actions.js +0 -153
  673. package/components/rancherSortableTable/advanced-filtering.js +0 -272
  674. package/components/rancherSortableTable/debug.js +0 -117
  675. package/components/rancherSortableTable/filtering.js +0 -290
  676. package/components/rancherSortableTable/grouping.js +0 -48
  677. package/components/rancherSortableTable/index.vue +0 -2712
  678. package/components/rancherSortableTable/paging.js +0 -155
  679. package/components/rancherSortableTable/selection.js +0 -629
  680. package/components/rancherSortableTable/sortable-config.ts +0 -4
  681. package/components/rancherSortableTable/sorting.js +0 -129
  682. package/config/product/legacy.js +0 -62
  683. package/config/secret.js +0 -14
  684. package/dialog/SaveAsRKETemplateDialog.vue +0 -139
  685. package/models/etcdbackup.js +0 -45
  686. package/pages/auth copy/login.vue +0 -595
  687. package/pages/auth copy/logout.vue +0 -47
  688. package/pages/auth copy/setup.vue +0 -523
  689. package/pages/auth copy/verify.vue +0 -203
  690. package/pages/c/_cluster/fleet/GitRepoGraphConfig.js +0 -249
  691. package/pages/c/_cluster/legacy/pages/_page.vue +0 -29
  692. package/pages/c/_cluster/legacy/project/_page.vue +0 -57
  693. package/pages/c/_cluster/legacy/project/index.vue +0 -32
  694. package/pages/c/_cluster/legacy/project/pipelines.vue +0 -96
  695. package/types/cloud-shell/index.d.ts +0 -11014
@@ -8,6 +8,9 @@ import { NAMESPACE, AGE } from '@shell/config/table-headers';
8
8
  import { findBy } from '@shell/utils/array';
9
9
  import { ExtensionPoint, TableColumnLocation } from '@shell/core/types';
10
10
  import { getApplicableExtensionEnhancements } from '@shell/core/plugin-helpers';
11
+ import { ToggleSwitch } from '@components/Form/ToggleSwitch';
12
+ import ResourceTableWatch from '@shell/mixins/resource-table-watch';
13
+ import paginationUtils from '@shell/utils/pagination-utils';
11
14
 
12
15
  // Default group-by in the case the group stored in the preference does not apply
13
16
  const DEFAULT_GROUP = 'namespace';
@@ -43,9 +46,21 @@ export default {
43
46
 
44
47
  emits: ['clickedActionButton'],
45
48
 
46
- components: { ButtonGroup, SortableTable },
49
+ components: {
50
+ ButtonGroup, SortableTable, ToggleSwitch
51
+ },
52
+
53
+ mixins: [
54
+ ResourceTableWatch
55
+ ],
47
56
 
48
57
  props: {
58
+ searchPlaceholder: {
59
+ // search框内的输入提示
60
+ type: String,
61
+ default: '名称'
62
+ },
63
+
49
64
  schema: {
50
65
  type: Object,
51
66
  default: null,
@@ -207,16 +222,17 @@ export default {
207
222
  type: Number,
208
223
  default: null, // Default comes from the user preference
209
224
  },
210
- searchPlaceholder: {
211
- // search框内的输入提示
225
+
226
+ overrideInStore: {
212
227
  type: String,
213
- default: '名称'
228
+ default: undefined,
214
229
  },
230
+
215
231
  },
216
232
 
217
233
  data() {
218
234
  // Confirm which store we're in, if schema isn't available we're probably showing a list with different types
219
- const inStore = this.schema?.id ? this.$store.getters['currentStore'](this.schema.id) : undefined;
235
+ const inStore = this.overrideInStore || (this.schema?.id ? this.$store.getters['currentStore'](this.schema.id) : undefined);
220
236
 
221
237
  return {
222
238
  inStore,
@@ -226,7 +242,8 @@ export default {
226
242
  * Primary purpose is to directly connect an iteration of `rows` with a sortGeneration string. This avoids
227
243
  * reactivity issues where `rows` hasn't yet changed but something like workspaces has (stale values stored against fresh key)
228
244
  */
229
- sortGeneration: undefined
245
+ sortGeneration: undefined,
246
+ listAutoRefreshToggleEnabled: paginationUtils.listAutoRefreshToggleEnabled({ rootGetters: this.$store.getters }),
230
247
  };
231
248
  },
232
249
 
@@ -242,10 +259,15 @@ export default {
242
259
  }
243
260
  },
244
261
  immediate: true
245
- }
262
+ },
263
+
246
264
  },
247
265
 
248
266
  computed: {
267
+ actionsWidth() {
268
+ return this.$store.getters['type-map/actionsWidth'] // 从 getter 里拿
269
+ },
270
+
249
271
  options() {
250
272
  return this.$store.getters[`type-map/optionsFor`](this.schema, this.externalPaginationEnabled);
251
273
  },
@@ -433,8 +455,6 @@ export default {
433
455
  return this._group;
434
456
  },
435
457
  set(value) {
436
- console.log('_group:===='+value);
437
-
438
458
  this._group = value;
439
459
  }
440
460
  },
@@ -445,12 +465,13 @@ export default {
445
465
  const customGroupable = !!this.options?.listGroups?.length;
446
466
 
447
467
  // sshkey去掉分组按钮
448
- if(this.parsedPagingParams.singularLabel === 'SSH Key' || this.parsedPagingParams.singularLabel === '负载均衡器'){
449
- return false
450
- }
468
+ if(this.parsedPagingParams.singularLabel === 'SSH Key' || this.parsedPagingParams.singularLabel === '负载均衡器'){
469
+ return false
470
+ }
451
471
 
452
472
  return namespaceGroupable || customGroupable || this.groupOptions?.length;
453
473
  }
474
+
454
475
  return this.groupable || false;
455
476
  },
456
477
 
@@ -538,7 +559,6 @@ export default {
538
559
  pluralLabel: this.$store.getters['type-map/labelFor'](this.schema, 99),
539
560
  };
540
561
  },
541
-
542
562
  },
543
563
 
544
564
  methods: {
@@ -599,8 +619,9 @@ export default {
599
619
  if (event.key === 'Enter') {
600
620
  this.keyAction('detail');
601
621
  }
602
- }
603
- },
622
+ },
623
+
624
+ }
604
625
  };
605
626
  </script>
606
627
 
@@ -641,6 +662,11 @@ export default {
641
662
  @group-value-change="group = $event"
642
663
  @enter="handleEnterKeyPress"
643
664
  >
665
+
666
+ <template #search-main-button>
667
+ <div :style="{ width: actionsWidth + 'px' }"></div>
668
+ </template>
669
+
644
670
  <template
645
671
  v-if="showGrouping && _groupOptions.length > 1"
646
672
  #header-middle
@@ -658,7 +684,24 @@ export default {
658
684
  v-if="showGrouping"
659
685
  #header-right
660
686
  >
661
- <slot name="header-right" />
687
+ <slot
688
+ name="header-right"
689
+ />
690
+ </template>
691
+
692
+ <template
693
+ v-if="externalPaginationEnabled"
694
+ #watch-controls
695
+ >
696
+ <!-- See https://github.com/rancher/dashboard/issues/14359 -->
697
+ <ToggleSwitch
698
+ v-if="listAutoRefreshToggleEnabled"
699
+ class="auto-update"
700
+ :value="watching"
701
+ name="label-system-toggle"
702
+ :on-label="t('resourceTable.autoRefresh.label')"
703
+ @update:value="toggleWatch"
704
+ />
662
705
  </template>
663
706
 
664
707
  <template #group-by="{group: thisGroup}">
@@ -706,3 +749,9 @@ export default {
706
749
  </template>
707
750
  </SortableTable>
708
751
  </template>
752
+
753
+ <style lang="scss" scoped>
754
+ .auto-update {
755
+ min-width: 150px; height: 40px
756
+ }
757
+ </style>
@@ -73,6 +73,11 @@ export default {
73
73
  default: true
74
74
  },
75
75
 
76
+ showErrors: {
77
+ type: Boolean,
78
+ default: true
79
+ },
80
+
76
81
  applyHooks: {
77
82
  type: Function,
78
83
  default: null,
@@ -229,7 +234,7 @@ export default {
229
234
  }
230
235
 
231
236
  try {
232
- await this.value.saveYaml(yaml);
237
+ await this.value.saveYaml(yaml, this.initialYaml);
233
238
  } catch (err) {
234
239
  return onError.call(this, err);
235
240
  }
@@ -289,6 +294,13 @@ export default {
289
294
  }
290
295
  },
291
296
 
297
+ refresh() {
298
+ this.$refs.yamleditor.refresh();
299
+ },
300
+
301
+ closeError(index) {
302
+ this.errors = (this.errors || []).filter((_, i) => i !== index);
303
+ },
292
304
  }
293
305
  };
294
306
  </script>
@@ -318,7 +330,8 @@ export default {
318
330
  class="footer"
319
331
  :class="{ 'edit': !isView }"
320
332
  :mode="mode"
321
- :errors="errors"
333
+ :errors="showErrors ? errors : []"
334
+ @close-error="closeError"
322
335
  @save="save"
323
336
  @done="done"
324
337
  >
@@ -0,0 +1,106 @@
1
+ <script lang="ts">
2
+ import { defineComponent, h, VNode } from 'vue';
3
+ import { useStore } from 'vuex';
4
+ import { purifyHTML } from '@shell/plugins/clean-html';
5
+
6
+ const ALLOWED_TAGS = ['b', 'i', 'span', 'a']; // Add more as needed
7
+
8
+ /**
9
+ * A component for rendering translated strings with embedded HTML and custom Vue components.
10
+ *
11
+ * This component allows you to use a single translation key for a message that contains
12
+ * both standard HTML tags (like <b>, <i>, etc.) and custom Vue components (like <router-link>).
13
+ *
14
+ * @example
15
+ * // In your translation file (e.g., en-us.yaml):
16
+ * my:
17
+ * translation:
18
+ * key: 'This is a <b>bold</b> statement with a <customLink>link</customLink>.'
19
+ *
20
+ * // In your Vue component:
21
+ * <RichTranslation k="my.translation.key">
22
+ * <template #customLink="{ content }">
23
+ * <router-link to="{ name: 'some-path' }">{{ content }}</router-link>
24
+ * </template>
25
+ * </RichTranslation>
26
+ */
27
+ export default defineComponent({
28
+ name: 'RichTranslation',
29
+ props: {
30
+ /**
31
+ * The translation key for the message.
32
+ */
33
+ k: {
34
+ type: String,
35
+ required: true,
36
+ },
37
+ /**
38
+ * The HTML tag to use for the root element.
39
+ */
40
+ tag: {
41
+ type: String,
42
+ default: 'span'
43
+ },
44
+ },
45
+ setup(props, { slots }) {
46
+ const store = useStore();
47
+
48
+ return () => {
49
+ // Get the raw translation string, without any processing.
50
+ const rawStr = store.getters['i18n/t'](props.k, {}, true);
51
+
52
+ if (!rawStr || typeof rawStr !== 'string') {
53
+ return h(props.tag, {}, [rawStr]);
54
+ }
55
+
56
+ // This regex splits the string by the custom tags, keeping the tags in the resulting array.
57
+ const regex = /<([a-zA-Z0-9]+)>(.*?)<\/\1>|<([a-zA-Z0-9]+)\/>/g;
58
+ const children: (VNode | string)[] = [];
59
+ let lastIndex = 0;
60
+ let match;
61
+
62
+ // Iterate over all matches of the regex.
63
+ while ((match = regex.exec(rawStr)) !== null) {
64
+ // Add the text before the current match as a plain text node.
65
+ if (match.index > lastIndex) {
66
+ children.push(h('span', { innerHTML: purifyHTML(rawStr.substring(lastIndex, match.index)) }));
67
+ }
68
+
69
+ const enclosingTagName = match[1]; // Captures the tag name for enclosing tags (e.g., 'customLink' from <customLink>...</customLink>)
70
+ const selfClosingTagName = match[3]; // Captures the tag name for self-closing tags (e.g., 'anotherTag' from <anotherTag/>)
71
+ const tagName = enclosingTagName || selfClosingTagName;
72
+
73
+ if (tagName) {
74
+ const content = enclosingTagName ? match[2] : '';
75
+
76
+ if (slots[tagName]) {
77
+ // If a slot is provided for this tag, render the slot with the content.
78
+ children.push(slots[tagName]({ content: purifyHTML(content) }));
79
+ } else if (ALLOWED_TAGS.includes(tagName.toLowerCase())) {
80
+ // If it's an allowed HTML tag, render it directly.
81
+ if (content) {
82
+ children.push(h(tagName, { innerHTML: purifyHTML(content, { ALLOWED_TAGS }) }));
83
+ } else {
84
+ children.push(h(tagName));
85
+ }
86
+ } else {
87
+ // Otherwise, render the tag and its content as plain HTML.
88
+ children.push(h('span', { innerHTML: purifyHTML(match[0]) }));
89
+ }
90
+ }
91
+
92
+ // Update the last index to continue searching after the current match
93
+ lastIndex = regex.lastIndex;
94
+ }
95
+
96
+ // Add any remaining text after the last match.
97
+ if (lastIndex < rawStr.length) {
98
+ children.push(h('span', { innerHTML: purifyHTML(rawStr.substring(lastIndex)) }));
99
+ }
100
+
101
+ // Render the root element with the processed children.
102
+ return h(props.tag, {}, children);
103
+ };
104
+ }
105
+ });
106
+ </script>
@@ -21,6 +21,8 @@ import { NAME as NAVLINKS } from '@shell/config/product/navlinks';
21
21
  import Group from '@shell/components/nav/Group';
22
22
  import LocaleSelector from '@shell/components/LocaleSelector';
23
23
  import { cloud2harvesterhci, harvester2cloud } from '@shell/utils/router';
24
+ import { NORMAN } from '@shell/config/types';
25
+
24
26
 
25
27
  export default {
26
28
  name: 'SideNav',
@@ -113,10 +115,14 @@ export default {
113
115
 
114
116
  computed: {
115
117
  ...mapState(['managementReady', 'clusterReady']),
116
- ...mapGetters(['isStandaloneHarvester', 'productId', 'clusterId', 'currentProduct', 'rootProduct', 'isSingleProduct', 'namespaceMode', 'isExplorer', 'isVirtualCluster']),
118
+ ...mapGetters(['isStandaloneHarvester', 'productId', 'clusterId', 'currentProduct', 'rootProduct', 'currentCluster', 'isSingleProduct', 'namespaceMode', 'isExplorer', 'isVirtualCluster']),
117
119
  ...mapGetters({ locale: 'i18n/selectedLocaleLabel', hasMultipleLocales: 'i18n/hasMultipleLocales' }),
118
120
  ...mapGetters('type-map', ['activeProducts']),
119
121
 
122
+ principal() {
123
+ return this.$store.getters['rancher/byId'](NORMAN.PRINCIPAL, this.$store.getters['auth/principalId']) || {};
124
+ },
125
+
120
126
  favoriteTypes: mapPref(FAVORITE_TYPES),
121
127
 
122
128
  supportLink() {
@@ -185,6 +191,12 @@ export default {
185
191
  allNavLinksIds() {
186
192
  return this.allNavLinks.map((a) => a.id);
187
193
  },
194
+
195
+ prod() {
196
+ const name = this.rootProduct.name;
197
+
198
+ return this.$store.getters['i18n/withFallback'](`product."${ name }"`, null, ucFirst(name));
199
+ },
188
200
  },
189
201
 
190
202
  methods: {
@@ -232,9 +244,32 @@ export default {
232
244
 
233
245
  replaceWith(this.groups, ...sortBy(out, ['weight:desc', 'label']));
234
246
 
247
+ // if (this.principal.loginName !== 'admin') {
248
+ // // 递归过滤函数(根据 label)
249
+ // this.groups = this.filterMenus(this.groups);
250
+ // }
251
+
252
+
235
253
  this.gettingGroups = false;
236
254
  },
237
255
 
256
+ // filterMenus(menus) {
257
+ // return menus
258
+ // .filter(item => item.label !== 'RBAC') // 过滤掉顶层 RBAC
259
+ // .map(item => {
260
+ // let newItem = { ...item };
261
+ // if (newItem.children) {
262
+ // // 过滤掉 children 里的 "资源大盘"
263
+ // newItem.children = newItem.children.filter(
264
+ // child => child.label !== '资源大盘'
265
+ // );
266
+ // // 递归处理剩下的 children
267
+ // newItem.children = filterMenus(newItem.children);
268
+ // }
269
+ // return newItem;
270
+ // });
271
+ // },
272
+
238
273
  getProductsGroups(out, loadProducts, namespaceMode, productMap) {
239
274
  const clusterId = this.$store.getters['clusterId'];
240
275
  const currentType = this.$route.params.resource || '';
@@ -400,56 +435,58 @@ export default {
400
435
  role="navigation"
401
436
  :aria-label="t('nav.ariaLabel.sideNav')"
402
437
  >
403
- <div class="side-all-title">
404
- 控制台
405
- </div>
438
+ <div class="side-all-title">
439
+ {{ prod == 'Cloud' && currentCluster ? '控制台' : prod }}
440
+ </div>
441
+
406
442
  <!-- Actual nav -->
407
443
  <div class="nav">
408
444
  <template
409
- v-for="(g) in groups"
410
- :key="g.name"
445
+ v-for="(g) in groups"
446
+ :key="g.name"
411
447
  >
412
- <Group
413
- ref="groups"
414
- id-prefix=""
415
- class="package"
416
- :group="g"
417
- :can-collapse="!g.isRoot"
418
- :show-header="!g.isRoot"
419
- @selected="groupSelected($event)"
420
- @expand="groupSelected($event)"
421
- />
448
+ <template v-if="principal.loginName && principal.loginName !== 'admin' && g.label === 'RBAC'">
449
+ </template>
450
+ <template v-else>
451
+ <Group
452
+ ref="groups"
453
+ id-prefix=""
454
+ class="package"
455
+ :group="g"
456
+ :can-collapse="!g.isRoot"
457
+ :show-header="!g.isRoot"
458
+ @selected="groupSelected($event)"
459
+ @expand="groupSelected($event)"
460
+ />
461
+ </template>
422
462
  </template>
423
463
  </div>
424
464
  <!-- SideNav footer area (seems to be tied to harvester) -->
425
465
  <!-- <div
426
466
  v-if="showProductFooter"
427
467
  class="footer"
428
- > -->
429
- <!-- support link -->
430
- <!-- <router-link
468
+ >
469
+ <router-link
431
470
  :to="supportLink"
432
471
  class="pull-right"
433
472
  role="link"
434
473
  :aria-label="t('nav.support', {hasSupport: true})"
435
474
  >
436
475
  {{ t('nav.support', {hasSupport: true}) }}
437
- </router-link> -->
438
- <!-- version number -->
439
- <!-- <span
476
+ </router-link>
477
+ <span
440
478
  v-clean-tooltip="{content: displayVersion, placement: 'top'}"
441
479
  class="clip version text-muted"
442
480
  >
443
481
  {{ displayVersion }}
444
- </span> -->
482
+ </span>
445
483
 
446
- <!-- locale selector -->
447
- <!-- <LocaleSelector
484
+ <LocaleSelector
448
485
  v-if="isSingleProduct && hasMultipleLocales && !isStandaloneHarvester"
449
486
  mode="login"
450
487
  :show-icon="false"
451
- /> -->
452
- <!-- </div> -->
488
+ />
489
+ </div> -->
453
490
  <!-- SideNav footer alternative -->
454
491
  <!-- <div
455
492
  v-else
@@ -479,6 +516,7 @@ export default {
479
516
  <style lang="scss" scoped>
480
517
  .side-nav {
481
518
  display: flex;
519
+ z-index: 10;
482
520
  flex-direction: column;
483
521
  .nav {
484
522
  flex: 1;
@@ -498,9 +536,8 @@ export default {
498
536
 
499
537
  A { padding-left: 0; }
500
538
  }
501
- :deep() A{
539
+ :deep() A:not(.menuRouterLink){
502
540
  height: 50px;
503
- background-color: #fff;
504
541
  }
505
542
 
506
543
  .tools {
@@ -1,15 +1,27 @@
1
1
  <script lang="ts" setup>
2
- import { computed } from 'vue';
2
+ import { computed, onBeforeUnmount, watch } from 'vue';
3
3
  import { useStore } from 'vuex';
4
+ import {
5
+ DEFAULT_FOCUS_TRAP_OPTS,
6
+ useWatcherBasedSetupFocusTrapWithDestroyIncluded
7
+ } from '@shell/composables/focusTrap';
8
+ import { isEqual } from 'lodash';
9
+ import { useRouter } from 'vue-router';
4
10
 
5
11
  const HEADER_HEIGHT = 55;
6
12
 
7
13
  const store = useStore();
8
14
  const isOpen = computed(() => store.getters['slideInPanel/isOpen']);
15
+ const isClosing = computed(() => store.getters['slideInPanel/isClosing']);
9
16
  const currentComponent = computed(() => store.getters['slideInPanel/component']);
10
17
  const currentProps = computed(() => store.getters['slideInPanel/componentProps']);
11
18
 
12
19
  const panelTop = computed(() => {
20
+ // Some components like the ResourceDetailDrawer are designed to take up the full height of the viewport so we want to be able to specify the top.
21
+ if (currentProps?.value?.top) {
22
+ return currentProps?.value?.top;
23
+ }
24
+
13
25
  const banner = document.getElementById('banner-header');
14
26
  let height = HEADER_HEIGHT;
15
27
 
@@ -20,11 +32,92 @@ const panelTop = computed(() => {
20
32
  return `${ height }px`;
21
33
  });
22
34
 
23
- const panelHeight = computed(() => `calc(100vh - ${ panelTop?.value })`);
35
+ // Some components like the ResourceDetailDrawer are designed to take up the full height of the viewport so we want to be able to specify the height.
36
+ const panelHeight = computed(() => (currentProps?.value?.height) ? (currentProps?.value?.height) : `calc(100vh - ${ panelTop?.value })`);
24
37
  const panelWidth = computed(() => currentProps?.value?.width || '33%');
25
38
  const panelRight = computed(() => (isOpen?.value ? '0' : `-${ panelWidth?.value }`));
26
39
 
27
- const panelTitle = computed(() => currentProps?.value?.title || 'Details');
40
+ const showHeader = computed(() => currentProps?.value?.showHeader ?? true);
41
+ const panelTitle = showHeader.value ? computed(() => currentProps?.value?.title || 'Details') : null;
42
+ const closeOnRouteChange = computed(() => {
43
+ const propsCloseOnRouteChange = currentProps?.value.closeOnRouteChange;
44
+
45
+ if (!propsCloseOnRouteChange) {
46
+ return ['name', 'params', 'hash', 'query'];
47
+ }
48
+
49
+ return propsCloseOnRouteChange;
50
+ });
51
+ const router = useRouter();
52
+
53
+ watch(
54
+ /**
55
+ * trigger focus trap
56
+ */
57
+ () => currentProps?.value?.triggerFocusTrap,
58
+ (neu) => {
59
+ if (neu) {
60
+ const opts = {
61
+ ...DEFAULT_FOCUS_TRAP_OPTS,
62
+ /**
63
+ * will return focus to the first iterable node of this container select
64
+ */
65
+ setReturnFocus: () => {
66
+ const returnFocusSelector = currentProps?.value?.returnFocusSelector;
67
+
68
+ if (returnFocusSelector && !document.querySelector(returnFocusSelector)) {
69
+ console.warn('SlideInPanelManager: cannot find elem with "returnFocusSelector", returning focus to main view'); // eslint-disable-line no-console
70
+
71
+ return '.dashboard-root';
72
+ }
73
+
74
+ return returnFocusSelector || '.dashboard-root';
75
+ }
76
+ };
77
+
78
+ useWatcherBasedSetupFocusTrapWithDestroyIncluded(
79
+ () => {
80
+ if (currentProps?.value?.focusTrapWatcherBasedVariable) {
81
+ return currentProps.value.focusTrapWatcherBasedVariable;
82
+ }
83
+
84
+ return isOpen?.value && !isClosing?.value;
85
+ },
86
+ '#slide-in-panel-manager',
87
+ opts,
88
+ false
89
+ );
90
+ }
91
+ }
92
+ );
93
+
94
+ watch(
95
+ () => router?.currentRoute?.value,
96
+ (newValue, oldValue) => {
97
+ if (!isOpen?.value) {
98
+ return;
99
+ }
100
+
101
+ if (closeOnRouteChange.value.includes('name') && !isEqual(newValue?.name, oldValue?.name)) {
102
+ closePanel();
103
+ }
104
+
105
+ if (closeOnRouteChange.value.includes('params') && !isEqual(newValue?.params, oldValue?.params)) {
106
+ closePanel();
107
+ }
108
+
109
+ if (closeOnRouteChange.value.includes('hash') && !isEqual(newValue?.hash, oldValue?.hash)) {
110
+ closePanel();
111
+ }
112
+
113
+ if (closeOnRouteChange.value.includes('query') && !isEqual(newValue?.query, oldValue?.query)) {
114
+ closePanel();
115
+ }
116
+ },
117
+ { deep: true }
118
+ );
119
+
120
+ onBeforeUnmount(closePanel);
28
121
 
29
122
  function closePanel() {
30
123
  store.commit('slideInPanel/close');
@@ -33,7 +126,10 @@ function closePanel() {
33
126
 
34
127
  <template>
35
128
  <Teleport to="#slides">
36
- <div id="slide-in-panel-manager">
129
+ <div
130
+ id="slide-in-panel-manager"
131
+ @keydown.escape="closePanel"
132
+ >
37
133
  <div
38
134
  v-show="isOpen"
39
135
  data-testid="slide-in-glass"
@@ -41,20 +137,27 @@ function closePanel() {
41
137
  :class="{ 'slide-in-glass-open': isOpen }"
42
138
  @click="closePanel"
43
139
  />
44
- <div
140
+ <aside
45
141
  class="slide-in"
46
142
  :class="{ 'slide-in-open': isOpen }"
47
- :style="{ width: panelWidth, right: panelRight, top: panelTop, height: panelHeight }"
143
+ :style="{
144
+ width: panelWidth,
145
+ right: panelRight,
146
+ top: panelTop,
147
+ height: panelHeight,
148
+ }"
48
149
  >
49
- <div class="header">
150
+ <div
151
+ v-if="showHeader"
152
+ class="header"
153
+ >
50
154
  <div class="title">
51
155
  {{ panelTitle }}
52
156
  </div>
53
157
  <i
54
158
  class="icon icon-close"
55
159
  data-testid="slide-in-close"
56
- :trigger-focus-trap="true"
57
- tabindex="0"
160
+ :tabindex="isOpen ? 0 : -1"
58
161
  @click="closePanel"
59
162
  />
60
163
  </div>
@@ -67,7 +170,7 @@ function closePanel() {
67
170
  class="dynamic-panel-content"
68
171
  />
69
172
  </div>
70
- </div>
173
+ </aside>
71
174
  </div>
72
175
  </Teleport>
73
176
  </template>
@@ -80,12 +183,11 @@ function closePanel() {
80
183
  left: 0;
81
184
  height: 100vh;
82
185
  width: 100vw;
186
+ z-index: z-index('slide-in');
83
187
  }
84
188
  .slide-in-glass-open {
85
- background-color: var(--body-bg);
189
+ background: var(--overlay-bg);
86
190
  display: block;
87
- opacity: 0.5;
88
- z-index: 1000;
89
191
  }
90
192
 
91
193
  .slide-in {
@@ -93,10 +195,10 @@ function closePanel() {
93
195
  flex-direction: column;
94
196
  position: fixed;
95
197
  top: 0;
96
- z-index: 2000;
97
198
  transition: right 0.5s ease;
98
199
  border-left: 1px solid var(--border);
99
200
  background-color: var(--body-bg);
201
+ z-index: calc(z-index('slide-in') + 1);
100
202
  }
101
203
 
102
204
  .slide-in-open {